Релевантность отзывов в Apache Solr

Я хотел бы реализовать релевантность обратной связи в Solr. У Solr уже есть функция Больше, как эта: При наличии единого документа верните набор похожих документов, ранжированных по сходству с одним входным документом. Возможно ли сконфигурировать Solr More Like This, чтобы вести себя как больше, как те? Другими словами: с учетом набора документов верните список документов, аналогичный набору входных данных (оцененный по подобию).

В соответствии с ответом на этот вопрос, превращающий Solr больше похоже на это во все больше. Это можно сделать следующим образом:

  • Возьмите URL-адрес результирующего набора запроса, возвращающего указанные документы. Например, url http://solrServer:8983/solr/select?q=id:1%20id:2%20id:3 возвращает ответ на запрос id:1 id:2 id:3, который является фактически конкатенацией документов 1, 2, 3.
  • Поместите вышеуказанный URL (конкатенация указанных документов) в параметр url.stream GET обработчика More Like This: http://solrServer:8983/solr/mlt?mlt.fl=text&mlt.mintf=0&stream.url=http://solrServer:8983/solr/select%3Fq=id:1%20id:2%20id:3. Теперь обработчик More Like This обрабатывает конкатенацию документов 1, 2 и 3 как единый входной документ и возвращает ранжированный набор документов, аналогичный конкатенации.

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

Solr More Like Эта функция реализована с помощью вариации Алгоритм Rocchio: он занимает 20 верхних позиций (одного) входного документа (термины с наивысшими значениями TF-IDF) и использует эти термины как измененный запрос, повышаемый в соответствии с их TF-IDF. Я ищу способ настройки Solr More Like This, чтобы принимать несколько документов в качестве своего ввода, извлекать верхние n терминов из каждого входного документа и запрашивать индекс с этими терминами, повышаемыми в соответствии с их TF-IDF.

Можно ли настроить More Like This, чтобы вести себя таким образом? Если нет, то каков наилучший способ реализации обратной связи релевантности в Solr?

Ответы

Ответ 1

К сожалению, невозможно настроить обработчик MLT таким образом.

Один из способов сделать это - реализовать пользовательский SearchComponent и зарегистрировать его в (выделенном) SearchHadler.

Я уже сделал что-то подобное, и довольно легко, если вы посмотрите оригинальную реализацию компонента MLT.

Самая сложная часть - синхронизация результатов от разных серверов осколков, но ее можно пропустить, если вы не используете осколки.

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