2016-12-01 4 views
1

Я пытаюсь найти Algolia и результаты для определенной категории отображаются перед всеми другими категориями. Вот пример:Algolia поиск с определенной категорией первых

данных в Algolia

{ name: Harry Potter, category: book}, 
{ name: The Avengers, category: movie}, 
{ name: Pottery, category: movie} 

Проблема

Скажем, нормальный алгоритм Algolia имеет Harry Potter путь более актуальным, чем фильм Pottery, так нормально, если вы искали pot то Harry Potter будет отображаться раньше Pottery.

Я хочу передать Algolia поисковый запрос pot и категорию movie, а затем Pottery показать впереди все остальное. Он должен быть динамичным, то есть я должен иметь возможность искать pot с категорией book и сначала получать Harry Potter.

Есть ли способ сделать это с помощью Алголии?

ответ

4

На самом деле существует хороший способ реализовать это поведение с использованием «факультативных» фасетных фильтров (скоро будет выпущена расширенная функция - с 2016/12/01).

«Факультативный фильтр фасета» - это фасетный фильтр, который не обязательно должен соответствовать полученному результату, но по умолчанию - убедитесь, что сначала получены образы, имеющие значение фасетки (благодаря критерию filters формулы рейтинга рейтинга Алголии).

Это именно то, что вы хотите: на каждой странице, где вы хотите, чтобы некоторые результаты делили значение category, которое нужно получить первым; просто запросите индекс Алголии с дополнительным фасетным фильтром category:value.

  • убедитесь, что ваш атрибут category является частью вашей установки
  • во время запроса attributesForFacet индекс, запрос индекса с index.search('', { optionalFacetFilters: ["category:book"])

Вы можете прочитать на this (beta) documentation page.

+0

Мне нужно что-то подобное, но еще сложнее: http://stackoverflow.com/questions/41166479/complex-featured-product-model-using-query-time-ranking-optional-filters Поблагодарили бы любого Помогите! –

Смежные вопросы