Page 1 of 2

Вывести точные совпадения в поиске Sphinx на первое место

Posted: Sun Jul 09, 2017 4:07 pm
by burn
Здравствуйте,
если делать поиск по нескольким словам, например "hot wife", то будут показаны все галеры с любым из этих слов (SPH_MATCH_ANY).
Нужно чтобы первыми показывались с точным совпадением.
Реализовать это можно примерно так:
$sphinxSearch->setRankingMode(SPH_RANK_EXPR, 'sum((4*lcs+2*(min_hit_pos==1)+exact_hit*100)*user_weight)*1000+bm25');

(Взято от сюда: https://toster.ru/q/48542)

Re: Вывести точные совпадения в поиске Sphinx на первое мест

Posted: Mon Jul 10, 2017 7:29 am
by admin
Да, добавить не вопрос, но вы проверили в шеле - выдает то что надо ?

Re: Вывести точные совпадения в поиске Sphinx на первое мест

Posted: Mon Jul 10, 2017 9:24 am
by burn
В шеле проверял, вроде, то что надо выдает.

Re: Вывести точные совпадения в поиске Sphinx на первое мест

Posted: Mon Jul 10, 2017 9:35 am
by admin
Скиньте плз ваш вариант строки - потестирую на нем в шеле тоже

Re: Вывести точные совпадения в поиске Sphinx на первое мест

Posted: Mon Jul 10, 2017 9:39 am
by burn

Code: Select all

mysql> SELECT * FROM domain_com_scj_index WHERE MATCH('hot wife') OPTION ranker=expr('sum((4*lcs+2*(min_hit_pos==1)+exact_hit*100)*user_weight)*1000+bm25');

Re: Вывести точные совпадения в поиске Sphinx на первое мест

Posted: Mon Jul 10, 2017 9:56 am
by admin
Да, интересный вариант.
Добавлено в ап.

Re: Вывести точные совпадения в поиске Sphinx на первое мест

Posted: Mon Jul 10, 2017 10:30 am
by burn
АПнул,
добавил вот так:
http://joxi.ru/1A5XjL0cK0Oez2

Изменений не увидел.

Re: Вывести точные совпадения в поиске Sphinx на первое мест

Posted: Mon Jul 10, 2017 10:31 am
by admin
а без кеша?

Re: Вывести точные совпадения в поиске Sphinx на первое мест

Posted: Mon Jul 10, 2017 10:41 am
by burn
Проверял без кэша.

Если менять "Sphinx Search Mod"
с SPH_MATCH_ANY
на SPH_MATCH_EXTENDED2
то результат меняется.

А при замене "Sphinx Ranker Mod" - нет.

Re: Вывести точные совпадения в поиске Sphinx на первое мест

Posted: Mon Jul 10, 2017 10:51 am
by admin
Может быть вы провели ап быстрее чем он залился
попробуйте провести еще раз
если не меняется - скидывайте шел и запрос на котором тестировать, буду првоерять