Алголийский поиск и вложенный массив - PullRequest
0 голосов
/ 11 мая 2018

Я работаю над поисковым приложением, которое использует Алголию для индексации. Когда пользователь вводит поисковый термин в поле ввода текста, мы хотим заполнить выпадающее меню автозаполнения событиями. Каждое событие также относится к категории событий.

Пример:

{
  "category": "Disney",
  "events": [
    {
      "title": "Ice Skating"
    },
    {
      "title": "Peter-Pan"
    },
    {
      "title": "Roller Skating"
    }
  ]
}

Если кто-то ищет «катание на коньках», мы хотим вернуть родительскую категорию и дочерние события «Катание на коньках» и «Катание на роликах», но пропустить событие «Питер-Пан».

Возможен ли этот тип вложенной фильтрации с помощью Algolia? Если так, то как будет работать фильтрация? Нужно ли это делать с помощью JS, будет ли Algolia обрабатывать это для меня или нам нужно создать отдельные индексы для категорий событий, а затем для отдельных событий?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Первое, что вам нужно сделать, это добавить events.title к доступным для поиска атрибутам. Это гарантирует, что когда конечный пользователь введет skat, он будет соответствовать одному из заголовков.

Затем вы можете проверить, какие части каждого результата соответствуют, используя _highlightResult и, более конкретно, фильтрацию на основе matchLevel :

checking the matchLevel in _highlightResult

полный - это когда у вас есть совпадение, а ни один - когда нет.

Эта фильтрация должна быть возможна в JS, в шаблоне, который вы используете для отображения результатов.

0 голосов
/ 12 мая 2018

Да, Algolia автоматически отфильтрует Peter Pan и вернет элементы с Skating.

. Например, у меня есть некоторые настройки данных, например:

announcements: [
  {
     id: ..,
     ..
     author: {
       id: ..,
       name: 'Preston',
       ..
     }
  },
  ..
]

ЕслиЯ ищу объявления для Preston, он будет возвращать любое объявление с Preston в атрибуте author.Это значение по умолчанию для Algolia, и оно будет искать всю запись по вашему запросу.Это может быть медленным.

Вы можете перейти на панель управления Algolia или с помощью API , и на вкладке Рейтинг вашего индекса определить, что вы хотите искать, иигнорировать.

...