Lucene: получение полной коллекции документов в качестве результатов - PullRequest
1 голос
/ 01 марта 2011

Когда я выполняю запрос в Lucene (topDocs = searcher.search(booleanQuery, 220000);), я получаю 170 обращений в качестве извлеченного документа. Это правильно, но я хотел бы иметь полный список документов в результатах, даже если результаты очень низкие.

Есть ли способ заставить lucene получить полный список документов всей моей коллекции, а не только соответствующих?

Или, может быть, это означает, что все остальные документы равны 0?

спасибо

Ответы [ 6 ]

4 голосов
/ 31 мая 2013

Начиная с Lucene 3.x, вы можете использовать TotalHitCountCollector, чтобы получить общее количество совпадений запроса.Затем вы можете получить все документы по вашему запросу с общим количеством просмотров.Будьте осторожны с делом без ударов.

TotalHitCountCollector collector = new TotalHitCountCollector();
searcher.search(booleanQuery, collector);
topDocs = searcher.search(booleanQuery, Math.max(1, collector.getTotalHits()));
3 голосов
/ 05 марта 2015

укажите q=*:* в качестве условия поиска

2 голосов
/ 07 июля 2015

Этот вопрос сейчас старый, но я думаю, что ОП искал MatchAllDocsQuery класс.

1 голос
/ 21 сентября 2011

Вы можете добавить какое-то поле ко всем документам, например test:1, а затем выполнить поиск, например [your_query] OR test:1.

0 голосов
/ 01 марта 2011

Lucene не выполняет фильтрацию на основе оценки. Если запрос имеет 170 обращений, то это означает, что только 170 документов соответствуют запросу. Остальные документы не совпадают и могут считаться равными 0.

0 голосов
/ 01 марта 2011

Должно работать, если вы ищете '*' и разрешаете ставить * в подстановочных запросах. Только что сделал тест в Luke для индекса 501 документа, который возвращает 501 результатов для этого запроса.

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