我有一个索引,其中包含用户的真实的姓名沿着名称有数字的设施。样本数据如下所示。
dim_employee = [
{"full_name": "Jon Doe", "email_address": "Jondoe123@test.com"},
{"full_name": "RIG 876 B&X", "email_address": "BX876RIG@test.com"}]
我希望能够支持模糊搜索错别字以及部分字搜索。
最初,我使用了下面的模糊查询:
GET dim_employee/_search
{
"query": {
"multi_match": {
"fields": [ "full_name", "email_address" ],
"query": "BX876",
"fuzziness": "AUTO",
"type": "best_fields"
}
}
}
此查询不返回包含BX867文档的记录。但是,如果我只查询876,则会得到预期的结果。搜索用户Jon Doe在此处工作正常。我可能输入错误,但工作正常。部分搜索在此处不返回预期的结果。
然后我尝试执行一个短语前缀查询,如下所示:
GET dim_employee/_search
{
"query": {
"multi_match": {
"fields": [ "full_name", "email_address" ],
"query": "BX867 ",
"type": "phrase_prefix"
}
}
}
这确实可以按预期获取BX867文档,但不再支持模糊匹配。如果我输入错误的用户Jon Doe,我将不会得到任何结果。有没有办法在搜索多个字段时进行模糊匹配和部分短语匹配?
1条答案
按热度按时间ego6inou1#
你为什么不把两个条款合并起来呢?