Сортировка результатов поиска по клику пользователя? - PullRequest
3 голосов
/ 29 марта 2012

Я сталкиваюсь с проблемой сортировки результатов Solr на основе журнала кликов пользователя.Я хотел бы, чтобы более доступные результаты были на первом месте.Кто-нибудь знает, как настроить или реализовать такое свойство в Solr?

Большое спасибо.

1 Ответ

6 голосов
/ 29 марта 2012

Хороший вопрос. Ваша проблема может рассматриваться как классическая проблема Коллективного разума или Мудрости толпы. Первый шаг состоит в том, чтобы подсчитать количество кликов по URL для определенного запроса, то есть для каждого запроса, пара URL, для которой вы будете вести подсчет для этого кортежа. Каждый раз, когда пользователь нажимает на определенный URL, счетчик увеличивается на 1. В качестве второго шага, когда Solr возвращает вам результаты на основе своих алгоритмов ранжирования и релевантности (скажем, LCS, Vector Space и т. Д.), В дополнение к этому для каждого запроса , пара url вернула вам рамку формулы, которая добавляет определенное значение (основанное на количестве кликов) к рангу, заданному Solr для документа, и затем вам необходимо отобразить результаты на основе общего полученного ранга.

Общая оценка, полученная для документа = Ранг, присвоенный Solr + Click Ranking Числовое значение, предоставленное вами.

Например, при поиске «плана iphone» Solr возвращает следующие ссылки в порядке высокого ранга к низкому:

  1. Apple
  2. AT & T
  3. Amazon

Теперь вы проверяете для каждого запроса, пару URL, т.е. {"план iphone", Apple} {"план iphone", AT & T} {"план iphone", Amazon}, количество кликов, и вы узнаете это количество кликов. для запроса самый высокий для AT & T по сравнению с Apple. Используя пользовательские формулы и придавая вес кликам, вы снова выполняете приведенные выше действия и меняете их порядок отображения.

Однако обратите внимание, что разработанные вами формулы не должны быть полезны для спамеров, которые могут изменять весь рейтинг вашего сайта, выполняя огромные клики по определенному документу (скажем, с помощью робота:))

Выше логика. Теперь есть два способа реализации вышеуказанного:

  1. Измените класс сходства Lucene (http://lucene.apache.org/core/old_versioned_docs/versions/3_0_1/api/all/org/apache/lucene/search/Similarity.html), т.е. сначала поймите, как Lucene ранжирует, а затем вставьте ваш модуль в этот

  2. Реализуйте это как отдельную процедуру поверх Solr.

Примечание: Помните, что получить количество для запроса, пары URL-адресов нелегко, если у вас большие / большие данные, в этом случае вам потребуется написать несколько заданий сокращения карты, чтобы выполнить это.

...