gpt4 book ai didi

contains - C# .Contains() 的 ElasticSearch NEST 替代方案

转载 作者:行者123 更新时间:2023-12-05 06:44:59 24 4
gpt4 key购买 nike

已从 Redis 移动到ElasticSearch 为我的个人项目,我需要一些大师的帮助。基本要求如下:

  1. 索引包含专辑类型的 POCO,其中包含艺术家、标题、年份等字段
  2. 当用户输入搜索词时,例如“2”,我应该得到上面字段包含搜索词的相册
  3. 它应该与专辑名称(如“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)
);

有什么改进查询的建议吗?

最佳答案

您需要使用 Ngram 分词器创建索引。然后使用不带通配符的搜索字符串。

示例:How to search for a part of a word with ElasticSearch

Ngram 分词器:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/analysis-ngram-tokenizer.html

关于contains - C# .Contains() 的 ElasticSearch NEST 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27042709/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com