Теги Algolia и варианты использования Facets

Новичок в Алголии, и у него есть небольшие проблемы с расшифровкой разницы (предлагаемого использования) тегов и фасетов - они кажутся функционально эквивалентными.

Документация Algolia дает один пример тега с идентификатором пользователя, например. «user_1234», который затем можно было бы использовать для фильтрации.

Однако это кажется функционально эквивалентным простому наличию этого в вашем JSON:

"пользователь": "1234"

а затем объявить «пользователь» как многогранное поле.

В чем разница/цель? Зачем нужны и теги, и фасеты?


person Ryan    schedule 03.06.2016    source источник


Ответы (1)


Вы действительно правы в том, что оба могут предоставить вам одинаковую функциональность фильтрации.
Основное различие заключается в подсчете фасетов, которые вычисляются во время индексации, что требует времени.

Вот почему теперь вы можете добавить в настройку attributesForFaceting модификатор onlyFilter к вашему атрибуту, например:

{
  attributesForFaceting: [
    'onlyFilter(user)'
  ]
}

Это сообщит движку, что атрибут user следует рассматривать как тег или список тегов (этот синтаксис в настоящее время недокументирован, но скоро должен быть).

Та же логика может быть применена к числовым атрибутам. По умолчанию механизм Algolia создает структуры данных для всех проиндексированных чисел, чтобы быстро отвечать на такие запросы, как nb_views>10000.
Это также требует больших вычислений, поэтому вы можете добавить модификатор equalOnly в numericAttributesToIndex.

person Jerska    schedule 03.06.2016