12

我的搜索引擎需要一种方法来处理搜索字符串中的小错别字并仍然返回正确的结果。

根据 ElasticSearch 文档,在文本查询中存在与模糊匹配相关的三个值:fuzzinessmax_expansionsprefix_length

不幸的是,没有太多关于这些参数的确切作用以及它们的合理值的详细信息。我确实知道模糊度应该是 0 到 1.0 之间的浮点数,而另外两个是整数。

任何人都可以为这些参数推荐合理的“起点”值吗?我确信我将不得不通过反复试验进行调整,但我只是在寻找能够正确处理错别字和拼写错误的大致值。

4

2 回答 2

17

我发现使用模糊查询来实际使用术语查询和模糊查询(具有相同术语)以检索拼写错误的结果时很有帮助,而且还确保输入的搜索词的实例在结果中出现最高.

IE

{
    "query": {
        "bool": {
            "should": [
                {
                    "match": {
                        "_all": search_term
                    }
                },
                {
                    "match": {
                        "_all": {
                            "query": search_term,
                            "fuzziness": "1",
                            "prefix_length": 2
                        }
                    }
                }
            ]
        }
    }
}

此处列出了更多详细信息:https ://medium.com/@wampum/fuzzy-queries-ae47b66b325c

于 2014-05-07T01:51:32.757 回答
8

根据Fuzzy Query文档,默认值为0.5min_similarity (看起来像您的模糊选项),max_expansionsprefix_length的“无界0

这个答案应该可以帮助您理解min_similarity选项。0.5似乎是一个好的开始。

prefix_lengthmax_expansions会影响性能:您可以尝试使用默认值进行开发,但要确保它不会扩展(lucene 开发人员甚至考虑将 prefix_length 的默认值设置为 2)。我建议运行基准测试以找到适合您特定情况的正确值。

于 2012-08-30T21:09:43.883 回答