我有一个搜索索引,其中包含以下设置:
$index->setSettings([
'searchableAttributes' => ['title', 'datePublished'],
'attributesForFacetting' => ['filterOnly(tags)']
]);
我将对象添加到索引中,如下所示:
$index->addObject([
'objectID' => $object->getId(),
'title' => $object->getTitle(),
'tags' => $object->getTags(), // i.e. ['tag one (special)', 'tag two', 'tag three']
'datePublished' => $object->getDatePublished()->getTimestamp()
]);
然后我进行搜索以获得相关项目:
$index->search(
[
'filters' => $tags, // i.e. "tags:tag one (special)" OR "tags:tag two"
'hitsPerPage' => 12
]
);
但是,即使有多个记录正在搜索标记,这也会返回0结果。我在Algolia仪表板中验证了这一点。那么我在这里做错了什么以及如何解决这个问题?
答案 0 :(得分:0)
你所做的一切似乎都是正确的。唯一的问题来自您在最终search()
电话中转发过滤器的方式。
您的$tags
变量应为{"filters": "tags:'tag one (special)' OR tags:'tag two'"}
。
filters
键应始终为字符串,每个过滤器由OR
/ AND
分隔。当值是单个单词时,您不需要任何引号,但如果它有多个单词,则需要将它们括在'
中。