Elasticsearch的模糊性和多个术语的比较

时间:2019-10-02 10:04:25

标签: elasticsearch

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

一种是自动模糊搜索

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

Others是与多个错别字匹配的字词查询

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

假设其中大约有20s或更多个术语,我想知道的是,哪个更可能是一种更好的做法,并且在性能上更好,以及与许多关键字匹配的术语的可扩展性。

2 个答案:

答案 0 :(得分:0)

匹配查询:

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

条款查询:

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

答案 1 :(得分:0)

让我们从 Performance:

开始

来自fuzzy docs

  

要查找相似的术语,模糊查询会在指定的编辑距离内创建搜索词的所有可能变化或扩展的集合。然后查询将为每个扩展返回完全匹配。

这两个查询的意思将是相似的执行,也就是说,假设您确实确实希望完全匹配,则术语查询不会分析使之成为“更高效”的短语。

更好的做法:

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

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