Релевантность отзывов в 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.
Самая сложная часть - синхронизация результатов от разных серверов осколков, но ее можно пропустить, если вы не используете осколки.
Я также настоятельно рекомендую использовать свои собственные параметры в вашей реализации, чтобы предотвратить столкновение с другими компонентами.