从我的个人项目Redis移到ElasticSearch,我需要大师的帮助。基本要求如下:
我的代码工作正常,但我使用的是我相信会影响性能的野外代码。代码如下:
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)
);
有任何改进查询的建议吗?
答案 0 :(得分:1)
您需要使用Ngram tokenizer创建索引。然后使用不带通配符的搜索字符串。
示例:How to search for a part of a word with ElasticSearch
Ngram tokenizer:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/analysis-ngram-tokenizer.html