Отображение «лучших результатов» с помощью Algolia?

Я хочу искать сразу 3 разных индекса, разбивая их результаты на 3 отдельных раздела.

Однако над этими 3 разделами я хочу отобразить 4-й раздел с одной строкой результатов, и этот раздел будет называться «Лучший результат».

Он должен брать лучший результат из трех индексов, который наиболее точно соответствует.

Кто-нибудь знает, как я могу этого добиться? Спасибо!


person Tallboy    schedule 26.12.2015    source источник


Ответы (1)


По задумке, когда ранжирование каждого индекса установлено правильно (заполнены как атрибуты attributeToIndex, так и настройки customRanking), механизм Algolia возвращает наиболее релевантные и популярные результаты для каждого нового поискового запроса. Сначала тот, что без опечаток и с полным совпадением, потом остальные...

Это означает, что если вы хотите отобразить все лучшие результаты на одной странице, вам нужно взять только N первых результатов каждого индекса. Тогда это просто вопрос отображения. Как и на следующих веб-сайтах, вы можете представить эти результаты в нескольких столбцах:

Не стесняйтесь просматривать советы о том, как лучше отображать результат попадает в несколько столбцов с использованием Algolia и Bootstrap 3

Кроме того, вы также можете рассмотреть возможность передачи параметра getRankingInfo=1 с вашим поисковым запросом и отфильтровать отображаемые результаты в соответствии с соответствующей информацией, возвращаемой для каждого попадания в свойстве _rankingInfo.

firstMatchedWord: 2000
geoDistance: 0
geoPrecision: 1
nbExactWords: 2
nbTypos: 0
proximityDistance: 1
userScore: 9499
words: 2
person Alex C    schedule 28.12.2015
comment
Я понимаю, что могу разбить результаты 3 индексов на 3 раздела (т. е. топ-5 для индексов A, B, C). Но я хочу иметь 4-й раздел, который выбирает ОДИН из всех индексов и помечает его как наилучшее соответствие, и он должен идти в самом верху... так что он вполне может исходить из любого индекса. Я думаю, вы ответили на него второй частью вашего вопроса, в которой говорится, что я могу получить рейтинговый «счет» и определить лучший матч. Верно? - person Tallboy; 28.12.2015
comment
Для getRankingInfo мне просто отсортировать по userScore? - person Tallboy; 28.12.2015
comment
Хорошо, я посмотрел, похоже, что userscore - это то, что мне нужно, но я нигде не могу найти это задокументировано. Это общая «оценка достоверности» результата поиска? Если так, то это идеально - person Tallboy; 28.12.2015
comment
Здесь userScore соответствует индексу, так что это не сработает. Может быть, тогда вы могли бы сделать 1/поместить всю запись в один индекс с дополнительным атрибутом для каждой записи, который описывает type 2/Затем во время запроса добавьте для 3 ваших запросов, facetFilter только для извлечения записей из Каждый тип. И нет фильтра для 4-го раздела. В этом случае вы получите наилучшие результаты независимо от типа каждой записи. Примечание. Затем вам необходимо иметь однородное значение customRanking для ваших 3 типов записей. Пользовательский рейтинг может быть - общее значение customRanking - numericValue index 1 - person Alex C; 29.12.2015
comment
Пользовательский рейтинг может быть следующим: 1/общее значение numericValue 2/первый индекс numericValue 3/второй индекс numericValue 4/третий индекс numericValue - person Alex C; 29.12.2015