【问题标题】:Elasticsearch fuzzy matching: How can I get direct hits first?Elasticsearch 模糊匹配:如何先获得直接点击?
【发布时间】:2014-09-02 04:14:31
【问题描述】:

我正在使用 Elasticsearch 在数据库中搜索姓名,并且我希望它是模糊的,以允许出现轻微的拼写错误。根据我在这件事上找到的建议,我使用“匹配”和“模糊”而不是“模糊”,这似乎更准确。这是我的查询:

{ "query": 
    { "match": 
        { "last_name": 
            { "query": "Beach", 
              "type": "phrase",
              "fuzziness": 2
            } 
        }
     }
}

但是,尽管我有很多带有姓氏“Beach”的结果(我知道至少有 100 个),但在查询返回的前 10 个命中中,我也得到了姓氏“Beech”和“Berch”的结果。有人可以帮我弄清楚如何首先获得精确匹配吗?

【问题讨论】:

    标签: elasticsearch fuzzy-search


    【解决方案1】:

    尝试将您的查询更改为带有 2 个应该查询的布尔查询。

    第一个是您当前的查询,第二个是只提供完全匹配的查询,然后给那个一个很大的提升(比如 10.0)。

    这应该让你的完全匹配在顶部,同时仍然列出你的部分匹配。

    【讨论】:

    • @user3784238 你是怎么做到的?一个必须和一个应该查询?两者都有模糊性还是其中一个没有?
    • 我们可以为建议者做同样的事情吗?
    • @EricaStockwell-Alpert 能否请您发布用于修复此问题的实际 ES 查询?
    猜你喜欢
    • 1970-01-01
    • 2011-11-01
    • 2019-05-08
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多