Algolia NOT IN or DOES NOT EQUAL

时间:2016-07-11 20:33:32

标签: javascript algolia

Is it possible to do a 'NOT IN' syntax. For example:

  {"Persons" :[{"Name":"Matthew"},{"Name":"John"}]}

Select * from Persons where Name!=John

So essentially select all records that don't have John in Persons.

1 个答案:

答案 0 :(得分:3)

首先注意:你应该总是将Algolia与数据库结合使用,搜索引擎在数据库引擎应该处理的一些操作上做得很差。

使用Algolia facet排除,它绝对可行:

  

通过 - 运算符支持否定,为构面值加前缀   例如:\n

摘自facetFilters

的文档

对于您的示例,假设“名称”是attributesForFaceting的一部分,您要执行的查询只是:

<?php

$text = '<p></p><p></p>';
$dom = new \DOMDocument();
$dom->loadHTML($text);
$innerHTML = "";
foreach ($dom->getElementsByTagName('body')->item(0)->childNodes as $child) {
    $innerHTML .= $dom->saveHTML($child);
}
echo json_encode($innerHTML);

如果您使用的是algoliasearch-helper-js,则使用的方法是addExcludeRefinement

最后,值得注意的是,如果您的属性是数字,则应使用numericFilters代替。