我有一个索引将一些字段存储为数组,因为它们可能有多个值,比如第一个/最后一个名字,因为我们在Maiden名称上保留历史数据,昵称ectElasticsearch查询字段有多个值,一个匹配得分相等
{
"_index": "structured",
"_type": "entity",
"_id": "0000230799",
"_score": 1,
"_source": {
"FIRST_NAME": [
"Deborah",
"Debbie"
],
"LAST_NAME": [
"Loverde",
"Frogameni"
]
}
},
{
"_index": "structured",
"_type": "entity",
"_id": "0000309483",
"_score": 1,
"_source": {
"FIRST_NAME": [
"Anthony",
"Tony"
],
"LAST_NAME": "Frogameni",
},
然而,当我这样做,其中一个文档对属性有多个值的搜索,它会给出比一个文件,让只在使用匹配
属性有一个价值较低的分数指数在上方,它获得了第二个更高的纪录,因为第一个纪录有两个姓氏,而第二个纪录是一个
我怎么能说如果我匹配多个值的字段上的一个值,它被评为相同的 作为只有一个值的字段?像Max我需要在这里匹配是1
POST /structured/entity/_search?explain=true
{
"query": {
"bool":{
"should":[
{
"match_phrase_prefix":{
"FIRST_NAME":{"query":"debbi"}
}
},
{
"match_phrase_prefix":{
"LAST_NAME":"frogameni"
}
}
]
}
}
}
任何帮助非常感谢
,请在您的elasticsearch.yml文件中放入index.similarity.default.type:BM25。优秀的答案! –