这是我的搜索对象:
{
"_index": "search",
"_type": "product",
"_id": "2",
"_version": 1,
"found": true,
"_source": {
"datePublished": "2014-01-01T00:00:00-08:00",
"published": true,
"name": "Winter Coat",
"description": "A nice warm winter coat. If you get cold with this on, you've probably done something wrong.",
"brand": {
"name": "Burton"
}
}
}
这是我试图执行的查询:
$query = new Query\QueryString('*' . 'winter' .'*');
$boolFilter = new Bool();
$brandFilter = new Term(['brand.name' => 'Burton']);
$boolFilter->addMust($brandFilter);
$filtered = new Filtered($baseQuery, $boolFilter);
return Query::create($filtered);
但我什么都没有回来。我做错了什么?
答案 0 :(得分:0)
经过一些试验和错误后,我发现由于使用了标记器,术语是一种有点不可靠的方法来进行精确匹配。对于您想要完全匹配的任何字段,您需要确保不进行分析。或者,您可以使用整数值(例如对象ID)进行精确匹配。在精确匹配的情况下,我最终使用了ids。