阿尔及利亚或条件

Algolia OR Condition

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

这看起来可以解决问题吗?

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

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

You can also use a JSON string array encoding (for example encodeURIComponent('[["category:Book","category:Movie"],"author:John Doe"]') ).

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

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

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

您可以使用相同类型的语法对构面筛选器和标记筛选器执行 OR。您可以在字符串中使用括号或使用您编码的数组来做到这一点。请参阅 details 的 REST API 文档。

此外,如果您使用 API 客户端,实施可能会有所不同。您应该查看特定的文档页面(例如 PHP related documentation

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

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

然后将其作为第二个参数传递给搜索方法。

归功于 Iman Santoso:https://au.linkedin.com/in/iman-santoso-9a6bb016