Algolia过滤不起作用

时间:2018-01-15 02:39:49

标签: php algolia

我有一个搜索索引,其中包含以下设置:

$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仪表板中验证了这一点。那么我在这里做错了什么以及如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

你所做的一切似乎都是正确的。唯一的问题来自您在最终search()电话中转发过滤器的方式。

您的$tags变量应为{"filters": "tags:'tag one (special)' OR tags:'tag two'"}

filters键应始终为字符串,每个过滤器由OR / AND分隔。当值是单个单词时,您不需要任何引号,但如果它有多个单词,则需要将它们括在'中。