【发布时间】:2021-01-19 08:36:44
【问题描述】:
拥有以下数据集:
[
{
"id": 234,
"category": "shoe"
},
{
"id": 44,
"category": "shoes"
},
{
"id": 49,
"category": "blue shoes"
},
{
"id": 48,
"category": "small shoes with glare"
}
]
类别的映射设置为文本。
然后进行如下查询:
$query = (new ElasticQuery())
->setQuery([
"bool" => [
"must" => [
"match" => [
"category" => [
"query" => "shoe size 22"
],
]
]
],
]);
Elastic 总是将我作为第一个结果/最高分返回:
- 有眩光的小鞋
- 蓝色鞋子
- 鞋
而不是鞋子。
我如何告诉 elastic 我只想要匹配 100% 的类别内容的文档? (不是查询)
我的意思是,如果我的搜索不包含“蓝鞋”,我不希望出现蓝色结果。我只希望得到鞋子或鞋子和鞋子的最大值。
我不能使用术语,因为正如我所说,我不希望与查询完全匹配。我希望匹配的文档字段完全匹配。
例子:
- 查询:鞋码 22
- 预期结果:
- 鞋
- 查询:有眩光的小鞋
- 预期结果:
- 有眩光的小鞋
- 鞋
- 查询:蓝色鞋子
- 预期结果:
- 蓝色鞋子
- 鞋
- 查询:绿鞋
- 预期结果:
- 鞋
【问题讨论】:
标签: php elasticsearch match exact-match