Могу ли я заставить Lucene возвращать неограниченное количество результатов поиска? - PullRequest
4 голосов
/ 15 февраля 2011

Я использую Lucene 3.0.1 в среде Java 5. Я немного исследовал эту проблему, но документация не дала прямых ответов.

Использование метода поиска

TopFieldDocs    search(Weight weight, Filter filter, int nDocs, Sort sort) 

Мне всегда нужно предоставлять максимальное количество результатов поиска nDocs .

Что если я хочу получить все подходящие результаты? Такое ощущение, что установка nDocs на Integer.MAX_VALUE - это своего рода хакерский способ сделать это (и приведет к снижению скорости и производительности памяти?).

Кто-нибудь еще, кто имеет какие-либо идеи?

1 Ответ

6 голосов
/ 15 февраля 2011

Вы используете метод поиска , который возвращает верхние n совпадения для запроса.

Существуют другие (более низкоуровневые) методы , которые не имеют ограничений, и в документации говорится, что «приложения должны использовать это, только если им нужны все соответствующие документы. Поисковый API высокого уровня (search (Query, int)) обычно более эффективен, так как пропускает попадания без высокой оценки. ".

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

...