2010-10-12 9 views
9

Actualmente llamo al método optimize del indexwriter después de las terminaciones de la escritura. Dado que mi conjunto de datos es enorme, tardó mucho tiempo (y necesita más espacio (2 * tamaño real)) para optimizar el índice. Estoy muy preocupado porque muchos documentos se incluyen con frecuencia en el índice.¿es obligatorio optimizar el índice de lucene después de escribir?

Así

  1. ¿Está bien para apagar Optimizar?
  2. ¿Cuáles son las implicaciones de rendimiento, como cuánto más lenta es la consulta cuando no está optimizada?

Saludos

Respuesta

14

El Lucene FAQ dice:

¿Qué es la optimización del índice y cuándo debo usarlo?

La clase IndexWriter admite un método optimize() que compacta la base de datos de índice y acelera las consultas. Es posible que desee utilizar este método después de realizar una indexación completa de su conjunto de documentos o después de las actualizaciones incrementales del índice. Si su actualización incremental agrega documentos con frecuencia, desea realizar la optimización solo de vez en cuando para evitar la sobrecarga adicional de la optimización.

Si decido no optimizar el índice, ¿cuándo se eliminarán realmente los documentos eliminados?

Los documentos que se eliminan se marcan como eliminados. Sin embargo, el espacio que consumen en el índice no se recupera hasta que se optimice el índice. Ese espacio también será recuperado a medida que se agreguen más documentos al índice, incluso si el índice no se optimiza.

+0

eso es realmente útil ....... :) – RameshVel

1

Conoces mejor tus datos, por lo que te sugiero que realices algunas pruebas para medir qué tan rápido se ejecutan tus consultas con y sin el paso optimize.

De acuerdo con los javadocs, "en entornos con actualizaciones frecuentes, la optimización se realiza mejor en tiempos de poco volumen, si es que lo hace". Solo debe optimizar cuando sea necesario. Si solo el 5% de sus documentos ha cambiado desde la última optimización, entonces no es necesario, así que tenga una idea de la frecuencia con la que cambian sus documentos. Tal vez pueda optimise con menos frecuencia, por ejemplo una vez cada pocas horas o una vez al día.

También eche un vistazo a this thread en el que desaconsejan llamar en absoluto en un entorno cuyos índices se actualizan constantemente y en su lugar optan por establecer un bajo mergeFactor.

+0

gracias por el enlace .. :) – RameshVel

Cuestiones relacionadas