2011-10-26 17 views
5

Estoy trabajando con la clase SearchFiles en el directorio contrib/demo de Lucene. En lugar de buscar resultados en forma paginada, quiero recuperar todos los documentos que coincidan con la consulta. ¿Hay alguna manera de hacer esto con la API existente (3.4)? Parece que todas las funciones de búsqueda requieren un número entero que indica la cantidad de visitas para devolver.Consultando todos los resultados en Lucene IndexSearcher

El código de demostración se parece

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

Lo que sólo devolverá un número fijo de resultados

Respuesta

3

Escribe tu propia Collector y utilizarlo como searcher.Search(query, new MyCollector());

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

+2

el enlace de arriba está MUERTO, esta es la razón por la cual * link only answers chupe! * –

+0

@JarrodRoberson Me gusta esto http://stackoverflow.com/a/1919289/932418 :) Desapareció después de mover github. –

+1

un enlace a un proyecto, que ha sido corregido por cierto, es diferente a un enlace a información/documentación que podría publicarse aquí en su totalidad. –

6

Si se utiliza una Lector Lucene, es decir, IndexReader, usted puede ayudarse escribiendo

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

Esto garantizará que no se omita ningún resultado de la búsqueda.

Cuestiones relacionadas