Как придать больший вес новым статьям в поиске Сфинкса? - PullRequest
0 голосов
/ 11 февраля 2011

У меня есть поиск Sphinx на сайте django, который работает очень хорошо.Он находит отличные совпадения для всех видов запросов.Я хотел бы иметь возможность повысить рейтинг в новых результатах.Довольно часто статьи, которым много лет, будут иметь более высокий рейтинг, чем новинки.Старые статьи чаще содержат поисковый запрос, поэтому имеют большую релевантность, но новые статьи по-прежнему очень актуальны, поэтому я бы хотел, чтобы они появились первыми.

Я пытался прочитать документацию Sphinx о взвешивании, но он невероятно запутан и полон терминологии, которую я не совсем понимаю.Я хочу, чтобы результаты поиска были в основном такими же, как и сейчас, я просто хочу немного повысить рейтинг результатов с более поздними датами pub_dates.

Ответы [ 3 ]

4 голосов
/ 12 февраля 2011

Используя SPH_SORT_EXPR, вы можете изменить сортировку по арифметическому выражению, например:

$ cl-> SetSortMode (SPH_SORT_EXPR, "@weight + IF (pub_date> strtotime ('2011-01-01), 50, 0));

В этом выражении статьи, опубликованные с 1 января 2011 года, наберут +50 к весу.

1 голос
/ 17 февраля 2011

$ cl-> SetSortMode (SPH_SORT_EXPR, "@id");это дает вам рампу - чем новее, тем больше вес.Просто сделайте @id * 2, чтобы удвоить эффект, или / 2, чтобы ослабить его.

Это не сработает, потому что с помощью абсолютных значений трудно предсказать результаты.Например, два сообщения с идентификатором 100 и идентификатором 99000 соответственно, но с очень хорошим весом для идентификатора 100 и очень плохим весом для идентификатора 99000 увеличат идентификатор 99000.

0 голосов
/ 13 февраля 2011

$cl->SetSortMode ( SPH_SORT_EXPR, "@id" ); это дает вам рампу - чем новее, тем больше вес.Просто сделайте @id * 2, чтобы удвоить эффект, или / 2, чтобы ослабить его.

...