Связь между TopDocs.totalHits и параметром 'n' в Indexsearcher.search - PullRequest
0 голосов
/ 16 мая 2018

Я хотел бы найти общее количество совпадений для запроса с использованием индекса Lucene (версия 4.3.1).

Я понял, что должен использовать один из методов поиска https://lucene.apache.org/core/5_3_0/core/org/apache/lucene/search/IndexSearcher.html#search(org.apache.lucene.search.Query,%20int)

public TopDocs search(Query query,
             int n) - Finds the top n hits for query.

В TopDocs я вижу поле totalHits https://lucene.apache.org/core/5_3_0/core/org/apache/lucene/search/TopDocs.html#totalHits

Но я не могу понять влияние параметра 'n' search () до TopDocs.totalHits .

Например: если я установил n = 1000, тогда это TopDocs.totalHits будет <= n? </p>

В одном из моих прогонов я передал n = 1, но в этом поиске TopDocs.totalHits было 29.

Может кто-нибудь, пожалуйста, скинуть несколькосвет.

1 Ответ

0 голосов
/ 16 мая 2018

Если я установлю n = 1000, то будет ли TopDocs.totalHits быть <= n? </p>

Да.С помощью «n» вы определяете, сколько результатов вас интересует. TopDocs.totalHits отражает эффективное число найденных обращений.

Обычно поиск по всему документу не очень полезен, поскольку это может привести к проблемам с производительностью.В дополнение к этому пользователь может не интересоваться всеми результатами -> там, где происходит подкачка или фильтрация.

Если вы хотите найти все результаты, вам нужно работать с Collector и этим методом поиска:

public void search(Query query, Collector results)

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

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