Elasticsearch模糊匹配:如何首先获得直接命中?

时间:2014-07-11 13:51:45

标签: elasticsearch fuzzy-search

我正在使用Elasticsearch搜索数据库中的名称,我希望它是模糊的,以允许轻微的拼写错误。根据我在这个问题上发现的建议,我使用“匹配”和“模糊”而不是“模糊”,这看起来更准确。这是我的问题:

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

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

1 个答案:

答案 0 :(得分:5)

尝试将查询更改为包含2个查询的布尔查询。

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

这应该会让你的确切匹配在最重要的位置,同时仍然列出你的部分匹配。