1

我注意到用逗号分隔搜索词会导致 AND 条件:dog, cat = dog AND cat。有没有办法执行 OR 条件?

这看起来会奏效吗?

index.search("shirts", {
  "facets": "*",
  "hitsPerPage": 10,
  "facetFilters": [
    "size:M",
    "size:L",
  ],
  "maxValuesPerFacet": 100
});

这看起来是否适用于动态传递构面值?它在文档中说:

您还可以使用 JSON 字符串数组编码(例如encodeURIComponent('[["category:Book","category:Movie"],"author:John Doe"]'))。

"facetFilters": json_encode(["size:M","size:L"])

对于寻找如何使用 OR 条件进行搜索的任何人,它们在文档中被称为“OR 改进”。这是一些有效的代码:

$algolia_config_settings = array("facets" => "*",
                                 "facetFilters" => array( array("pa_size:xxs", 
                                                                "pa_size:5xl") ),
                                 "hitsPerPage" => 1000); 
4

2 回答 2

1

您可以使用相同的语法对构面过滤器和标签过滤器执行 OR。您可以使用字符串中的括号或使用您编码的数组来执行此操作。有关详细信息,请参阅 REST API 文档。

同样,如果您使用 API 客户端,实现可能会有所不同。您应该查看特定的文档页面(例如PHP 相关文档

于 2016-02-04T12:28:06.507 回答
0

如果您使用 Algolia PHP 库,您可以添加 OR 过滤器:

$filters[] = 'option1: value1 OR option2: value2' 

然后将此作为第二个参数传递给 search 方法。

归功于伊曼桑托索:https ://au.linkedin.com/in/iman-santoso-9a6bb016

于 2017-02-28T03:41:43.147 回答