Алголийский фильтр по вложенному атрибуту JavaScript
Поэтому я использую Algolia.com для индексации пользователей для быстрого поиска.
Пример объекта в индексе:
{
id: 1,
username: "john.doe",
name: "John Doe",
attributes: {
gender: "male",
hair_color: "blonde",
eye_color: "blue",
height: 165
}
}
Я хотел бы отфильтровать результаты по определенному атрибуту (ключу объекта) в объекте атрибутов.
Я думал, может быть, используя facetFilters
будет делать работу, но я не могу заставить ее работать.
Я пробовал много вариантов этого кода:
user_index.search('', {
facets: '*',
facetFilters: ['attributes.hair_color:blonde', 'attributes.eye_color:blue']
}, function(error, data) {
console.log(error, data);
});
- / -
user_index.search('', {
facets: '*',
facetFilters: ['hair_color:blonde']
}, function(error, data) {
console.log(error, data);
});
Пожалуйста, найдите документацию здесь: https://www.algolia.com/doc/javascript
2 ответа
Просто для того, чтобы иметь возможность пометить этот вопрос как ответ:
Вы должны добавить attributes.hair_color
на ваш attributesForFaceting
(Отображение вкладки в вашей информационной панели индекса) Вы должны быть в состоянии легко сделать
user_index.search('', {
facetFilters: 'attributes.hair_color:blonde'
}, function () {
console.log(arguments);
});
искать.
Похоже, использование фасетных фильтров - лучший способ достичь того, что вы ищете. Самым простым способом обработки этих фильтров, вероятно, является использование Javascript Helper https://github.com/algolia/algoliasearch-helper-js.
Вам тогда нужно будет только позвонить
helper.addFacetRefinement('hair_color', 'blonde').search();