2011-10-26 20 views
5

Pracuję z klasą SearchFiles w katalogu contrib/demo Lucene. Zamiast wyszukiwania wyników w formie stronicowanej, chcę pobrać wszystkie dokumenty pasujące do zapytania. Czy jest jakiś sposób, aby to zrobić z istniejącym API (3.4)? Wygląda na to, że wszystkie funkcje wyszukiwania wymagają liczby całkowitej wskazującej ilość trafień do zwrotu.Zapytanie o wszystkie wyniki w Lucene IndexSearcher

Kod demo wygląda

TopDocs results = searcher.search(query, 5 * hitsPerPage); 
ScoreDoc[] its = results.scoreDocs; 

Który będzie tylko powrót stałą liczbę wyników

Odpowiedz

3

Napisz Collector i używać go jako searcher.Search(query, new MyCollector());

http://lucene.apache.org/java/3_4_0/api/core/org/apache/lucene/search/Collector.html

+2

powyższy link jest martwy, dlatego * link tylko odpowiada suck! * –

+0

@JarrodRoberson Podoba mi się ten http://stackoverflow.com/a/1919289/932418 :) Zniknął po przeniesieniu github. –

+1

Link do projektu, który został naprawiony btw, różni się od linku do informacji/dokumentacji, które można opublikować tutaj w całości. –

6

przypadku użycia Lucene Reader, czyli IndexReader, ty może pomóc sobie, pisząc:

TopDocs results = searcher.search(query, reader.numDocs()); 

Zapewni to brak wyniku pominiętego w wyszukiwaniu.