首页 文章

ElasticSearch中的模糊设置

提问于
浏览
11

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

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

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

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

2 回答

  • 6

    根据Fuzzy Query doc, min_similarity (看起来像 fuzziness 选项)的默认值是 0.5max_expansions 的"unbounded"和 prefix_length0 .

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

    prefix_lengthmax_expansions 会影响性能:您可以尝试使用默认值进行开发,但请确保它不会缩放(lucene developers were even considering setting a default value of 2 for prefix_length) . 我建议运行基准测试以找到适合您特定情况的正确值 .

  • 14

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

    I.E.

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

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

相关问题