Nestライブラリのバージョン5.3.1を使用してElasticSearchインデックスデータの設定と部分検索を行っています。依存関係; Elasticsearch.Net)。以下に示すように、私はデータを使用し、オンラインで見つけ提案を1としてNestを使用したElasticSearch:クエリ<>を使用した複数の単語を使用した部分検索ワイルドカード
は、インデックス付きプロパティの一部にアナライザの種類を指定する属性:
public class Article
{
public int Id { get; set; }
[Completion(Analyzer = "standard", PreservePositionIncrements = true, PreserveSeparators = true)]
public string Title { get; set; }
public string Url { get; set; }
}
私は「条」タイプの検索インデックス内の少なくとも1つのレコード持っています"The greatest ...."で始まるタイトル。以下のコードを使用してキーワード「最大」の部分検索を実行すると、一致する検索結果を返すだけでうまく動作します。
MultiTermQueryRewrite multiqueryRewrite = null;
var searchQuery = Query<Article>.Wildcard(f => f.Title, "*greatest*", rewrite: multiqueryRewrite);
var client = ElasticsearchClient.GetClient<Article>();
return client.Search<Article>(s => s.Query(searchQuery));
しかし、下記のバリエーションのある「最高の」キーワードを検索しようとすると、結果が戻ってこない。
var searchQuery = Query<Article>.Wildcard(f => f.Title, "*the greatest*", rewrite: multiqueryRewrite);
または
var searchQuery = Query<Article>.Wildcard(f => f.Title, "*the*greatest*", rewrite: multiqueryRewrite);
あるいは
var searchQuery = Query<Article>.Wildcard(f => f.Title, "*the?greatest*", rewrite: multiqueryRewrite);
私はElasticSearch製品に新しいですので、任意の助けをいただければ幸いです。
ご協力いただきありがとうございます。
あなたの返信ありがとうございます@リチャ、私はそれが非常に便利だと思った。あなたの提案に基づいて、私は一致結果に "the"と "greatest"の両方の単語が存在することを保証するためだけに、 "Default Operator"を追加指定する必要がありました。 'クエリ。QueryString(qs => qs.Query(term).DefaultField(f => f.Title).DefaultOperator(Operator.And)); ' –