我正在使用Elasticsearch搜索数据库中的名称,我希望它是模糊的,以允许轻微的拼写错误。根据我在这个问题上发现的建议,我使用“匹配”和“模糊”而不是“模糊”,这看起来更准确。这是我的问题:
{ "query":
{ "match":
{ "last_name":
{ "query": "Beach",
"type": "phrase",
"fuzziness": 2
}
}
}
}
然而,尽管我在last_name“Beach”(我知道至少有100个)中有很多结果,但我在查询返回的前10个命中中也得到了last_name“Beech”和“Berch”的结果。有人可以帮我弄清楚如何先获得完全匹配吗?
答案 0 :(得分:5)
尝试将查询更改为包含2个查询的布尔查询。
第一个是你当前的查询,然后第二个是只提供完全匹配的查询,然后给那个提供一个很大的提升(如10.0)。
这应该会让你的确切匹配在最重要的位置,同时仍然列出你的部分匹配。