【问题标题】:Elasticsearch fuzziness and multiple terms comparisonElasticsearch 模糊性和多个术语比较
【发布时间】:2019-10-02 10:04:25
【问题描述】:

基本上我目前正在为弹性搜索创建模糊搜索 我有两种搜索要比较

一种是自动模糊搜索

{
    "query": {
       "match": {
         "user": {
           "query": "test",
           "fuzziness": "AUTO"
         }
       }
    }
}

Others 是匹配多个拼写错误的词条查询

{
    "query" : {
        "terms" : {
            "user" : ["test", "testt", "tesr", "tst", ...]
        }
    }
}

假设可能有大约 20 个或更多的术语,我想知道的是,哪一个更可能是更好的实践和更好的性能,以及与大量关键字匹配的术语的可扩展性。

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    匹配查询:

    1. 分析输入字符串并从中构造更多基本查询。
    2. 当您需要全文搜索功能时使用它。
    3. 您可以将其用于部分匹配、令牌搜索、模糊逻辑

    词条查询:

    1. 匹配确切的术语。
    2. 如果搜索到的文本不需要任何分析,即必须按原样匹配文本,则应使用它。
    3. 比匹配更快

    【讨论】:

      【解决方案2】:

      让我们从性能开始:

      来自fuzzy docs

      为了找到相似的词,模糊查询会创建一组在指定编辑距离内的搜索词的所有可能变体或扩展。然后查询返回每个扩展的完全匹配。

      意味着这两个查询将导致类似的执行,也就是说,术语查询不会分析短语,使其更“有效”,假设您确实想要完全精确匹配。

      更好的做法:

      如果没有关于您的产品、数据和用例的更多详细信息,这很难回答。

      话虽如此,我觉得条款查询是更好的解决方案,您真的希望partpark 匹配吗?或resortreport 匹配?盲目使用模糊是很棘手的,如果你最终选择了这条路,我建议你在某处添加一些额外的逻辑来处理这些结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-05-08
        • 2013-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-29
        • 1970-01-01
        相关资源
        最近更新 更多