2

我正在尝试进行精确的位置搜索,这意味着该位置中的每个术语都应该与至少一个位置字段完全匹配。例如,如果我搜索“萨德伯里,米德尔塞克斯,马萨诸塞州”,那么我只想获得与这三个术语中的每一个都完全匹配的结果。location.city.name = Sudbury、location.county.name = Middlesex 和 location.region.name = 马萨诸塞州的结果将匹配。

{
"multi_match": {
    "fields": [
        "location.city.name",
        "location.region.name",
        "location.county.name",
        "location.country.name"
    ],
    "query": "Sudbury, Middlesex, Massachusetts",
    "type": "cross_fields",
    "operator": "and"
}

这非常接近,但我也得到了“东萨德伯里”的结果。我不想要东萨德伯里,我只想要与该领域完全匹配的结果。我怎样才能做到这一点?我知道 "type":"phrase" 是错误的,因为它会在每个字段中搜索整个短语 "Sudbury, Middlesex, Massachusetts" 并且不会得到任何结果。

4

1 回答 1

0

听起来像字段 location.city.name 正在被分析并将“东萨德伯里”拆分为“东”和“萨德伯里”,并返回搜索“萨德伯里”

如果您总是在搜索特定术语,请尝试将该字段设置为 not_analyzed?

于 2015-03-23T17:07:38.177 回答