gpt4 book ai didi

ElasticSearch 查询/搜索/匹配

转载 作者:行者123 更新时间:2023-11-29 02:57:20 24 4
gpt4 key购买 nike

我在我的 ElasticSearch 索引中插入了 3 条记录,如下所示:

curl -XPOST 'http://127.0.0.1:9200/geoindex_test/STREET?pretty=1'  -d '
{ "cityNames" : [ { "language" : "ENG",
"name" : "w bridgewater",
"raw_name" : "W BRIDGEWATER"
},
{ "language" : "ENG",
"name" : "west bridgewater",
"raw_name" : "West Bridgewater"
}
],
"id" : 1,
"streetNames" : [ { "language" : "ENG",
"name" : "cram rd",
"raw_name" : "Cram Rd"
} ]
}'

curl -XPOST 'http://127.0.0.1:9200/geoindex_test/STREET?pretty=1' -d '
{ "cityNames" : [ { "language" : "ENG",
"name" : "bridgewater corners",
"raw_name" : "BRIDGEWATER CORNERS"
},
{ "language" : "ENG",
"name" : "bridgewater center",
"raw_name" : "Bridgewater Center"
}
],
"id" : 2,
"streetNames" : [ { "language" : "ENG",
"name" : "valley view rd",
"raw_name" : "Valley View Rd"
} ]
}'

curl -XPOST 'http://127.0.0.1:9200/geoindex_test/STREET?pretty=1' -d '
{ "cityNames" : [ { "language" : "ENG",
"name" : "bridgewater",
"raw_name" : "Bridgewater"
},
{ "language" : "ENG",
"name" : "windsor",
"raw_name" : "Windsor"
}
],
"id" : 3,
"streetNames" : [ { "language" : "ENG",
"name" : "valley view rd",
"raw_name" : "Valley View Rd"
} ]
}'

然后我执行如下搜索:

curl -XGET 'http://127.0.0.1:9200/geoindex_test/STREET/_search?pretty=1'  -d '
{
"query" : {
"match" : { "cityNames.name" : "bridgewater" }
}
}'

我原以为 ElasticSearch 会返回第三条记录 (id == 3) 作为最佳匹配(记录 3 是唯一与“bridgewater”完全匹配的记录),但它返回的是 id 1 (w bridgewater) 的记录作为最佳匹配。我做错了什么?

最佳答案

我想这是因为您正在使用内部对象,这些对象基本上将其下方的对象折叠成一个用于搜索目的。因此,例如,当您查询对象 1 的搜索字段时,您查询的是 ["w bridgewater", "west bridgewater"] 而不是您想象的离散字段。

由于“bridgewater”在对象 1 和 2(两个名称字段)中出现两次,而在对象 3 中出现一次,因此这些项目在搜索中排名更高。对象 1 最终被选中,因为“bridgewater”出现的字段比对象 2 中的字符串更短(“w bridgewater”与“bridgewater corners”)。

不要像现在这样使用内部对象,而是使用嵌套对象 http://www.elasticsearch.org/guide/reference/mapping/nested-type/ .将得分模式设置为“最大”将使事情以更直观的方式为您匹配。

关于ElasticSearch 查询/搜索/匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16676158/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com