WebDev2030
@WebDev2030
Битриксоид до мозга и костей

Как работает BM25 ранкер в sphinx?

Есть три документа с полем title: диван синий, диван красный, диван зеленый. Делаем поиск по слову "диван".
SELECT item, weight() AS rank FROM test WHERE match('@(title) диван') ORDER BY rank DESC OPTION ranker = BM25;

Получаем результат со всем тремя документами и весом 1319. Откуда именно 1319? Может кто-нибудь расписать в цифрах как получилось именно 1319?

https://habr.com/ru/company/sphinx/blog/62287/ - тут написано что bm25 - это вещественное число в диапазоне от 0 до 1. Опять же откуда тогда 1319?
  • Вопрос задан
  • 265 просмотров
Решения вопроса 1
ManticoreSearch
@ManticoreSearch
1. Значение веса найденного документа умножается на 1000 и округляется (0.319*, например, становится 319)
2. `ranker = BM25` учитывает и вес полей на самом деле. По умолчанию у каждого поля он 1, но тоже умножается на 1000.
3. Оба числа суммируются, получается: 1000*1 + 0.319*1000 = 1319
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
opium
@opium
Просто люблю качественно работать
читайте доку там довольно подробно все расписано и можно сходу понять откуда больше 1000 значения
sphinxsearch.com/docs/current/formulas-for-builtin...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы