我正在项目中使用模糊匹配主要是为了查找拼写错误和同一名称的不同拼写。我需要准确地了解Elasticsearch的模糊匹配是如何工作以及它如何使用标题中提到的两个参数。
据我了解,min_similarity是查询字符串与数据库中字符串匹配的百分比。我没有找到关于如何计算此值的精确描述。
据我理解,max_expansions是执行搜索的Levenshtein距离。如果这实际上是Levenshtein距离,那么它将成为我的理想解决方案。无论如何,它并不能很好地运行,例如,如果我有单词“Samvel”。
文档中说了些我不太理解的东西:
请问有人能解释一下这些参数如何影响搜索结果吗?
据我了解,min_similarity是查询字符串与数据库中字符串匹配的百分比。我没有找到关于如何计算此值的精确描述。
据我理解,max_expansions是执行搜索的Levenshtein距离。如果这实际上是Levenshtein距离,那么它将成为我的理想解决方案。无论如何,它并不能很好地运行,例如,如果我有单词“Samvel”。
queryStr max_expansions matches?
samvel 0 Should not be 0. error (but levenshtein distance can be 0!)
samvel 1 Yes
samvvel 1 Yes
samvvell 1 Yes (but it shouldn't have)
samvelll 1 Yes (but it shouldn't have)
saamvelll 1 No (but for some weird reason it matches with Samvelian)
saamvelll anything bigger than 1 No
文档中说了些我不太理解的东西:
Add max_expansions to the fuzzy query allowing to control the maximum number
of terms to match. Default to unbounded (or bounded by the max clause count in
boolean query).
请问有人能解释一下这些参数如何影响搜索结果吗?
max_expansions
和min_similarity
应该一起使用。因此,实际的距离限制是由min_similarity
完成的,而max_expansions
的作用就像MySQL的LIMIT
子句一样?它只是限制潜在结果的数量? - Yervand Aghababyan