Добрый день,
допустим мы ищем по фразе «история города».
Есть раздел сайта, который так и называется «История города», т.е. полное соответствие значению поля.
И есть раздел сайта, у которого в контенте много слов «история» и «город» в различных вариациях.
Sphinx определяет релевантность этого второго раздела выше чем первого. Впринципе, я его понимаю — там много совпадений, но мне нужно чтобы разделы со 100% совпадением поля с запросом выводились с самого начала.
Как такое можно реализовать?
Решение:
использовать такой вариант ранжирования:
$sphinxSearch->setRankingMode(SPH_RANK_EXPR, 'sum((4*lcs+2*(min_hit_pos==1)+exact_hit*100)*user_weight)*1000+bm25');
Именно
exact_hit*100 отвечает за поднятие точных соответствий вверх