我有查询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相同的结果?
谢谢
最佳答案
您应该学会了解如何为您的术语建立索引,例如,您的电子邮件(如果使用的是默认设置)正在发出以下 token :
abcdef
xxxxx
com
这就是为什么当您使用
"abcdef"
作为短语进行查询时会得到匹配的原因。现在,您可以使用分析器,该分析器将使用Edge NGram filter(或tokenizer)。因此,您的电子邮件将发出此类 token :
abc
abcd
abcde
abcdef
abcefg
... com
您将不得不使用custom analyzer为您的电子邮件编制索引,然后
abc
短语才能找到匹配项
关于elasticsearch - Elasticsearch 得分基本长度特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33955324/