ElasticSearch中的模糊设置

Cla*_*ell 12 search fuzzy-search elasticsearch

需要一种方法让我的搜索引擎处理搜索字符串中的小拼写错误,并仍然返回正确的结果.

根据ElasticSearch文档,有三个值与文本查询中的模糊匹配相关:模糊性,max_expansionsprefix_length.

不幸的是,关于这些参数究竟是做什么的,并没有很多详细信息,以及它们的合理值.我知道模糊性应该是0到1.0之间的浮点数,而另外两个是整数.

任何人都可以为这些参数推荐合理的"起点"值吗?我确信我将不得不通过反复试验来调整,但我只是在寻找球场价值来正确处理拼写错误和拼写错误.

rob*_*rob 16

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

IE

{
    "query": {
        "bool": {
            "should": [
                {
                    "match": {
                        "_all": search_term
                    }
                },
                {
                    "match": {
                        "_all": {
                            "query": search_term,
                            "fuzziness": "1",
                            "prefix_length": 2
                        }
                    }
                }
            ]
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这里列出的更多细节:https://medium.com/@wampum/fuzzy-queries-ae47b66b325c


A21*_*21z 7

按照模糊查询文档,默认值是0.5用于min_similarity(它看起来像你的模糊选项),对于"无界" max_expansions0的prefix_length.

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

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