Поиск с помощью Solr, Sphinx или Lucene - ранжирование результатов поиска по кликам - PullRequest
1 голос
/ 25 мая 2011

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

Возможно ли это с помощью Solr (Lucene) или Sphinx?

Ответы [ 3 ]

2 голосов
/ 25 мая 2011

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

Для "ранжирования выше" результатов, возможно, функция solr-elevator будет полезна для ваших нужд:

Вероятно, функция возвышения более полезна, чем функция усиления люцена (в вашем случае). http://lucene.apache.org/java/2_4_0/queryparsersyntax.html#Boosting%20a%20Term Я думаю, что это зависит от вида реализации.

1 голос
/ 25 мая 2011

С Solr (Lucene) это, конечно, возможно, но не реально.Что вам нужно сделать, это:

  1. Отслеживание кликов пользователей
  2. Нормализация поискового запроса, чтобы сгруппировать похожие запросы и сохранить их
  3. Переиндексировать это в Solr

Если вы спросите меня, это звучит как большая работа с большим количеством подводных камней.

0 голосов
/ 27 мая 2011

С помощью Sphinx вы можете использовать дополнительный атрибут clicks_count и использовать такой запрос для ранжирования документов, по которым щелкнули,

SELECT *, clicks_count*1000 AS cc 
FROM your_index 
WHERE MATCH ("words to match") ORDER BY cc DESC;

чтобы получить только клики на счет

или

SELECT *, weght() + clicks_count*10000 AS cc 
FROM your_index 
WHERE MATCH ("words to match") ORDER BY cc DESC;

чтобы получить вес совпадения с весом кликов на счет

Конечно, вы обновили свой счетчик 'clicks_count'.

...