我的搜索引擎需要一种方法来处理搜索字符串中的小拼写错误并仍然返回正确的结果。
根据ElasticSearch文档,在文本查询中有三个与模糊匹配相关的值:模糊, max_expansions 和 prefix_length 。
不幸的是,关于这些参数究竟做了什么,以及它们的合理值是什么,并没有很多详细信息。我知道模糊性应该是介于0和1.0之间的浮点数,其他两个是整数。
有人可以为这些参数推荐合理的“起点”值吗?我确信我将不得不通过反复试验来调整,但我只是在寻找能够正确处理拼写错误和拼写错误的球场值。
答案 0 :(得分:16)
我发现在使用模糊查询实际使用术语查询和模糊查询(使用相同的术语)以便检索拼写错误的结果时,它也很有帮助,但也确保输入的搜索词的实例出现最高在结果中。
即
{
"query": {
"bool": {
"should": [
{
"match": {
"_all": search_term
}
},
{
"match": {
"_all": {
"query": search_term,
"fuzziness": "1",
"prefix_length": 2
}
}
}
]
}
}
}
此处列出了一些详细信息:https://medium.com/@wampum/fuzzy-queries-ae47b66b325c
答案 1 :(得分:7)
根据Fuzzy Query文档, min_similarity (看起来像模糊选项)的默认值为0.5
,“无界限”为对于 prefix_length , max_expansions 和0
。
This answer应该可以帮助您了解 min_similarity 选项。 0.5
似乎是一个好的开始。
prefix_length 和 max_expansions 会影响效果:您可以尝试使用默认值进行开发,但请确保它不会缩放(lucene developers were even considering setting a default value of 2 for prefix_length)。我建议运行基准测试以找到适合您特定情况的正确值。