個人的なプロジェクトのためにRedisから ElasticSearch に移行したので、マスターの助けが必要です。基本的な要件は次のとおりです。
- インデックスには、Artist、Title、Year などのフィールドを持つ Album タイプの POCO が含まれます
- ユーザーが「2」などの検索語を入力すると、上記のフィールドに検索語が含まれるアルバムを取得する必要があります
- 「2 States」などのアルバム タイトル、「2 Pac」などのアーティスト、「2014,1992..etc」の年と一致する必要があります。
コードは期待どおりに動作していますが、パフォーマンスに影響を与えると思われるワイルド文字を使用しています。コードは以下のとおりです。
var results = Client.Search<Album>(body =>
body.Query(query =>
query.QueryString(qs =>
qs.OnFieldsWithBoost(d => d
.Add(f => f.AlbumName.ToLowerInvariant(), 5.0)
.Add(f => f.AlbumTitle.ToLowerInvariant(), 2.0)
)
.Query(String.Format("{0}*", searchText))
)
)
.Take(100)
);
クエリを改善するための提案はありますか?