Есть ли способ для Solr/Lucene вернуть ранги выбранных документов вместо полных результатов?

Я заинтересован в том, чтобы запросить Solr с помощью запроса q и составить график отзыва набора документов D, когда возвращается {10, 20, 30, ...} документов.

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

Есть ли способ, чтобы Solr/Lucene возвращал ранги для набора идентификаторов вместо полных результатов?

Другие способы решения этой проблемы:

  • Для запроса верните ранг документа d
  • Для запроса до указанного ранга вернуть, присутствует ли документ d.
  • От результата запроса q1 до указанного количества записей вернуть количество записей, соответствующих другому запросу q2

person joeln    schedule 28.10.2011    source источник
comment
+1 за такой необычный вопрос. Могу я спросить, какую проблему вы собираетесь решить?\   -  person Jesvin Jose    schedule 28.10.2011
comment
Как правило, я хочу составить график отзыва Solr выбранных документов по разным запросам. В частности, я анализирую данные, собранные для работы в области вычислительной лингвистики, которая включает в себя поиск лучшей статьи для лингвистически ограниченного запроса. Мне нужно иметь возможность создавать различные запросы и определять, насколько хорошо они решают мою проблему.   -  person joeln    schedule 31.10.2011
comment
Хм, лучше использовать библиотеку Lucene.   -  person Jesvin Jose    schedule 31.10.2011


Ответы (2)


Нет, я не могу придумать способ SOLR или Lucene для этого. Я думаю, что самое простое решение здесь - запрограммировать это самостоятельно с помощью простого HashSet...

person Hugo Zaragoza    schedule 10.11.2011
comment
Чем поможет хэш? Допустим, я запрашиваю индекс с сортировкой по одному полю и хочу знать, на каком месте в списке будет тот или иной документ. - person toni; 22.12.2015
comment
Вероятно, это то, что вы уже делаете: поместите все идентификаторы D в набор (HashSet), затем выполните итерацию по набору результатов SOLR и проверьте, есть ли идентификатор в вашем наборе. Используйте курсор SOLR, если вы углубляетесь в набор результатов (много страниц). - person Hugo Zaragoza; 16.02.2016

Вы можете получить ранг по score полю.

Добавьте &fl=KeyFieldName,score, чтобы получить идентификатор документа и оценку вашего запроса. Если вам нужны все поля, добавьте &fl=*,score к вашему запросу.

Подробнее см. http://wiki.apache.org/solr/SolrRelevancyFAQ#How_can_I_see_the_relevancy_scores_for_search_results.

person Matej    schedule 01.12.2011
comment
Поле оценки дает мне больше информации, чем мне нужно. На самом деле мне не нужны результаты списка, мне просто нужно знать, на каком ранге появляется конкретный результат. Поэтому &fl=KeyFieldName было бы достаточно, чтобы просмотреть результаты. Но если есть тысячи результатов, это означает, что с сервера передается гораздо больше информации, чем необходимо, просто для того, чтобы узнать, в каком ранге появляется определенное значение KeyFieldName. - person joeln; 23.08.2012