Я заметил, что разделение поисковых терминов запятой приводит к условию AND: собака, кошка = собака и кошка.
Есть ли способ выполнить условие ИЛИ?
Похоже ли это на то, что это поможет?
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"])
Для тех, кто ищет, как искать с использованием условия ИЛИ, в документах они называются «ИЛИ уточнения». Вот код, который работал:
$algolia_config_settings = array("facets" => "*",
"facetFilters" => array( array("pa_size:xxs",
"pa_size:5xl") ),
"hitsPerPage" => 1000);
Вы можете сделать ИЛИ с помощью фасетных фильтров и фильтров тегов, используя один и тот же синтаксис. Вы можете сделать это, используя скобки в строке или использовать массив, который вы кодируете. См. Документацию REST API для подробности.
Также верно, что реализация может отличаться, если вы используете клиент API. Вы должны взглянуть на конкретную страницу документации (например, Связанная с PHP документация)
Если вы используете библиотеку Algolia PHP, вы можете добавить фильтры OR:
$filters[] = 'option1: value1 OR option2: value2'
а затем передать это в качестве второго аргумента в метод поиска.
Кредит идет к Иману Сантосо: https://au.linkedin.com/in/iman-santoso-9a6bb016