我想在elasticsearch中搜索,就像在sql server中一样。这就是我想要做的查询。
从名称类似“%samsung a50%”的产品中选择 *
我可以用下面的c#代码来完成这个查询。
c编号:
var urunler = elasticClient.Search<Urun>
(s => s.From(0)
.Query(query => query.Bool(b => b.Must(
x => x.Wildcard(x => x.Field("ad").Value("*" + value + "*"))
)))).Documents.ToList();
但是它不查询单词之间是否有空格。例如,如果我搜索单词“三星”,它找到了它。但是它没有找到单词“三星a50”。因为在“三星”和“a50”之间有空格。我希望它找到即使有空格。我怎么做呢?请用c#代码显示。
它也应该能够像现在这样过滤我按下字母的瞬间。它也应该能够检测空格键。当然,也应该有大写。
1条答案
按热度按时间2wnc66cl1#
我认为解决问题的关键是设置模糊查询的准确性。如以下代码:
Fuzziness.AutoLength(1, 2)
指定编辑距离的最小值为1,最大值为2,这意味着Elasticsearch将尝试匹配至少1个字符但不超过2个字符的查询字符串。您可以根据实际需要调整精度。
Match
和Fuzziness
来执行模糊搜索以匹配单词和空格应该是最佳解决方案。样品