Алголийский фильтр по вложенному атрибуту 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();
Другие вопросы по тегам