@test1111

Sphinx: Как изменить стандартный метод ранжирования?

Есть таблица с названиями фильма (movie_id, title) у одного фильма может быть несколько названий (на разных языках). Мне нужно реализовать полнотекстовый поиск по всем его названиям, фильмы с одинаковой релевантностью далее сортируются по дате.
В данный момент я использую Sphinx и делаю так:
sql_joined_field = all_movie_titles from query; select movie_id as id, title from tbl_movie_titles order by movie_id
Это единственное поле, по которому происходит поиск.
Как я понимаю, Sphinx ищет вхождения ключевой фразы в каждом названии фильма и по количеству этих вхождений проставляет вес, но у некоторых фильмов может быть 2 названия, а у некоторых 10. Т.к. некоторые ключевые слова часто дублируются в разных названиях одного фильма, то получается, что из двух одинаково релевантных фильмов один получается более релевантный из-за того, что у него больше названий и соответственно больше вхождений ключевого слова.
Я пробовал использовать разные ранкеры, везде получается плохо.
Как сделать так чтобы sphinx считал вес фильма не по всем названиям, а отдельно по каждому названию находил вес и ставил наибольший вес как итоговый?
Или с помощью чего и как это можно реализовать на другом движке, например, с помощью elastic search?
Заранее благодарен
  • Вопрос задан
  • 493 просмотра
Решения вопроса 1
opium
@opium
Просто люблю качественно работать
хранить названия для разных языков в разных полях и отдельно искать по ним и самому ранжировать.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Согласен с Пума Тайланд !
Можно использовать подход отсюда, который даёт более лучший результат (исходя из DEMO-примера).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы