栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用NEST的Elasticsearch:如何配置分析器以查找部分单词?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用NEST的Elasticsearch:如何配置分析器以查找部分单词?

简短答案

我认为您正在寻找的是模糊查询,该查询使用Levenshtein距离算法来匹配相似的单词。

关于nGrams的长答案

nGram过滤器根据定义的最小/最大范围将文本分成许多较小的标记。

例如,根据您的“音乐”查询,过滤器将生成:

'mu', 'us', 'si', 'ic', 'mus', 'usi', 'sic', 'musi','usic', and 'music'

如您所见

musiic
,与这些nGram令牌都不匹配。

为什么选择nGrams

nGrams的一个好处是,它可以 大大
加快通配符查询的速度,因为所有潜在的子字符串都是在插入时预先生成和索引的(我已经看到使用nGrams可以将查询速度从几秒提高到15毫秒)。

如果没有nGrams,则必须在查询时在每个字符串中搜索匹配项[O(n ^ 2)],而不是直接在索引[O(1)]中查找。作为伪代码:

hits = []foreach string in index:    if string.substring(query):        hits.add(string)return hits

return index[query]

请注意,这样做的代价是使插入速度变慢,需要更多的存储空间并增加了内存使用量。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/369905.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号