java - Se olvidó de cerrar el IndexWriter de Lucene después de agregar Documentos al índice
indexing full-text-indexing (1)
Tenía un programa ejecutándose durante 2 días para construir un índice Lucene de alrededor de 160 millones de archivos de texto, y después de que el programa terminó, traté de buscar en el índice y encontré que el índice no se había construido correctamente, indexReader.numDocs () devolvió 0. Verifiqué el directorio de índice, se veía bien, todos los datos de índice parecían estar allí, el directorio tiene 1.5 Gigabytes de tamaño.
Comprobé mi código y descubrí que olvidé llamar a indexWriter.optimize () e indexWriter.close (), quiero saber si es posible volver a optimizar () el índice, así que no necesito reconstruir todo el índice desde cero? Realmente no quiero que el programa tarde otros 2 días.
Llamar a IndexWriter.optimize()
no es necesario y se puede llamar en otro momento reabriendo el índice. Simplemente optimiza los documentos en el índice para un mejor rendimiento de lectura y de otro modo no afecta nada.
Si olvidó llamar a IndexWriter.close()
entonces su índice podría no estar completo. Debido a que procesaste tantos documentos, es probable que haya borrado la mayoría de ellos, así que con suerte solo necesitas volver a indexar los últimos. Use Luke como se sugiere para una IU para examinar rápidamente el índice y ver en qué estado se encuentra.