2017-07-26 26 views
0

私の質問は、NEST(C#)を使用してpercolate関数でmultimatch、slop、fuzzinessなどの検索オプションを使用するにはどうすればよいですか?Elasticsearch percolate関数の検索オプション

私は、次の検索機能の正反対の結果を返す浸出液機能を実装する:

public List<string> search(string query){ 
....... 
....... 
var searchResponse = client.Search<Document>(s => s 
       .AllTypes() 
        .From(0) 
        .Take(10) 
       .Query(q => q    // define query 
        .MultiMatch(mp => mp   // of type MultiMatch 
        .Query(input.Trim()) 
        .Fields(f => f   // define fields to search against 
        .Fields(f3 => f3.doc_text)) 
        .Slop(2) 
        .Operator(Operator.And) 
        .Fuzziness(Fuzziness.Auto)))); 
} 

次は私が現在使用して浸出液機能ですが、multimatchを含める方法スロップを知りませんあいまいさのオプション。私はその文書の中でこれについての詳細を見つけることができませんでした。

var searchResponseDoc = client.Search<PercolatedQuery>(s => s 
       .Query(q => q 
       .Percolate(f => f 
       .Field(p => p.Query) 
       .DocumentType<Document>() //I have a class called Document 
       .Document(myDocument))) // myDocument is an object of type Document 

ありがとうございます。

答えて

2

最初に、必要なオプションを持つmulti_matchクエリを実行しています。後者ではpercolatorクエリを実行します。

あなたがバイナリとビット演算子例えば

.Query(q => 
    !q.MultiMatch(mp => mp 
     .Query(input.Trim()) 
     .Fields(f => f.Fields(f3 => f3.doc_text)) 
     .Slop(2) 
     .Operator(Operator.And) 
     .Fuzziness(Fuzziness.Auto) 
    ) 
    && q.Percolate(f => f 
      .Field(p => p.Query) 
      .DocumentType<Document>() 
      .Document(myDocument) 
    ) 
) 

ないmust句としての2つのクエリでboolクエリを作成するための&&の使用を使用することができます両方を行いたい場合。単一の!演算子は、クエリをboolにラップし、クエリをmust_not句に入れてクエリを否定します。

は、おかげであなたの応答のためにたくさんの詳細情報https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/writing-queries.html

https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/bool-queries.html

+0

を参照してください。いいえ、両方をしたいとは思っていません。私は曖昧さと鈍感を考えることができるパーコレータが欲しいです。それはElasticsearchで可能ですか? – Abdulaziz

関連する問題