我正在使用 multi_match
和 phrase_prefix
在Elasticsearch 5.5中进行全文搜索 . ES查询看起来像
{
query: {
bool: {
must: {
multi_match: {
query: "butt",
type: "phrase_prefix",
fields: ["item.name", "item.keywords"],
max_expansions: 10
}
}
}
}
}
我得到了以下回复
[
{
"_index": "items_index",
"_type": "item",
"_id": "2",
"_score": 0.61426216,
"_source": {
"item": {
"keywords": "amul butter, milk, butter milk, flavoured",
"name": "Flavoured Butter"
}
}
},
{
"_index": "items_index",
"_type": "item",
"_id": "1",
"_score": 0.39063013,
"_source": {
"item": {
"keywords": "amul butter, milk, butter milk",
"name": "Butter Milk"
}
}
}
]
映射如下(我使用默认映射)
{
"items_index" : {
"mappings" : {
"parent_doc": {
...
"properties": {
"item" : {
"properties" : {
"keywords" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"name" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
}
}
}
}
}
}
}
item
如何 "name": "Flavoured Butter"
使用 "name": "Butter Milk"
获得 0.61426216
的高分并得分 0.39063013
?
我尝试将boost应用于 "item.name"
并删除 "item.keywords"
表单搜索字段获得相同的结果 .
Elasticsearch的得分如何?上述结果在相关性方面是否正确?
1 回答
phrase_prefix
的得分类似于best_fields
的得分,这意味着文档的得分是从best_field获得的得分,这里是item.keywords
.所以,
item.name
没有加分参考:multi-match-types
您可以使用2
multi_match
个查询来组合keywords
和name
的分数 .