【问题标题】:Algolia OR Condition阿尔哥利亚或条件
【发布时间】:2016-02-03 16:49:10
【问题描述】:

我注意到用逗号分隔搜索词会导致 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); 

【问题讨论】:

  • 你是什么意思?我们需要更多信息。
  • 我正在使用 PHP,但它的工作方式应该与 [link]algolia.com 站点大致相同。您可以尝试“快速,摆脱”,它会在标题中显示两者的记录。我想做一个 OR 搜索。
  • 我们可以看到您的搜索功能背后的代码吗?目前它有点“把它举到屏幕上,我会看看”

标签: php api search algolia


【解决方案1】:

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

同样,如果您使用 API 客户端,实现可能会有所不同。你应该看看具体的文档页面(例如PHP related documentation

【讨论】:

  • 那么,这样的东西会获取 m 或 l 尺寸的产品吗? $index->​​setSettings(array("attributesForFaceting" => array("pa_sizes"), "facets" => array("pa_sizes"), "facetFilters" => "pa_sizes:m,pa_sizes:l)" ));
  • setSettings 用于更改索引设置,而不用于进行查询。它更像是: $index->​​search("query", array("facetFilters" => "(pa_sizes:m,pa_sizes:l)" )
  • 您好 Bobylito,您能告诉我如何在此处包含代码 sn-p 吗?我想向你展示一个正在做你所说的事情的人。
  • 你不能在 cmets,你应该修改你的问题。
  • 感谢 bobylito!这就解释了!关于如何动态提供构面值的任何想法?这就是用户正在搜索的内容...查看代码片段的主要问题...
【解决方案2】:

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

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

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

感谢伊曼·桑托索:https://au.linkedin.com/in/iman-santoso-9a6bb016

【讨论】:

    猜你喜欢
    • 2017-07-10
    • 1970-01-01
    • 2022-10-08
    • 1970-01-01
    • 1970-01-01
    • 2022-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多