我有查询1:
"multi_match": {
"query": "abcdef",
"type": "best_fields",
"fields": [
"email"
]
}
结果是对的:
"total": 1,
"max_score": 4.6334114,
"hits": [
{
"_score": 4.6334114,
"_source": {
"id": 244,
"email": "abcdef@xxxxx.com",
}
}
]
}
但问题2:
"multi_match": {
"query": "abc",
"type": "best_fields",
"fields": [
"email"
]
}
结果是:
"total": 0,
"max_score": null,
"hits": []
如何自定义分数到查询2获得结果相同的查询1?
由于
答案 0 :(得分:0)
您应该了解如何将条款编入索引,例如您的电子邮件(如果您使用的是默认设置)会发出这些代币:
abcdef
xxxxx
com
这就是为什么当您使用"abcdef"
作为短语查询时,您将获得匹配。
现在您可以使用分析器,它将使用Edge NGram filter(或tokenizer)。所以你的电子邮件会发出这样的代币:
abc
abcd
abcde
abcdef
abcefg
... com
您必须使用此custom analyzer为您的电子邮件编制索引,然后您的abc
短语才会找到匹配