2010-02-25 12 views
9

Estoy trabajando en un proyecto para el cual quiero construir una nube de etiquetas leyendo un índice de Lucene y recortándolo. No configuré el motor Lucene, era alguien más en el equipo, ahora solo quiero leer su índice. ¿Cómo hacer eso en Java?¿Cómo leer un índice de Lucene?

Respuesta

7

lo que hay que buscar es cómo utilizar IndexReader clase, los .Términos() método devolverle todos los términos en el índice.

+0

¡Esto se ve aún mejor! ¿Hay alguna posibilidad de que sepa cómo acceder al índice si está en la carpeta WEB-INF/index? Yo uso OpenCMS y esa es la ubicación predeterminada. –

+0

de los documentos API. Las subclases concretas de IndexReader generalmente se construyen con una llamada a uno de los métodos static open(), p. abrir (Cadena). –

14

No está seguro de lo que entendemos por "leer" un índice:

  1. Si desea consultar se puede utilizar IndexSearcher clase.

  2. IndexReader le permite abrir el índice en modo de lectura.

Si desea ver el contenido del índice, puede utilizar Luke

+1

Gracias! ¡Luke parece ser la solución que estaba buscando! Por cierto –

+0

puede inicializar un 'IndexSearch' así: ' IndexSearcher IndexSearcher = new IndexSearcher (DirectoryReader.open (FSDirectory.open (nuevo archivo (pathToIndex)))); '' IndexSearcher' también tiene un constructor que acepta un 'ExecutorService', debe buscar eso para buscar diferentes segmentos en paralelo. –

9

Usted lo hace así -

IndexReader r = IndexReader.open("prdb_index"); 

int num = r.numDocs(); 
for (int i = 0; i < num; i++) 
{ 
    if (! r.isDeleted(i)) 
    { 
     Document d = r.document(i); 
     System.out.println("d=" +d); 
    } 
} 
r.close(); 
4

a hacer esto:

File indexDirectory = new File("YourIndexLocation"); 
IndexReader reader = IndexReader.open(FSDirectory.open(indexDirectory)); 
return reader.maxDoc(); //return total docs in index 
+0

¡Gracias, finalmente un código! – nilsi

Cuestiones relacionadas