在我的个人项目从Redis迁移到 ElasticSearch 之后,我需要一些大师的帮助。基本要求如下:
- 索引包含专辑类型的 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)
);
有什么改进查询的建议吗?