En mi proyecto utilizamos Lucene 2.4.1 para la búsqueda de texto completo. Este es un proyecto J2EE, IndexSearcher se crea una vez. En segundo plano, el índice se actualiza cada dos minutos (cuando el contenido cambia). Los usuarios pueden buscar el índice a través de un mecanismo de búsqueda en la página.Lucene parece estar almacenando resultados de búsqueda en caché, ¿por qué?
El problema es que los resultados devueltos por Lucene parecen almacenarse en caché de alguna manera.
Este es el escenario me di cuenta:
- que inicie la aplicación y la búsqueda de la 'palabra clave' - se devuelven 6 resultados,
- índice se actualiza, utilizando Luke veo, que hay 8 resultados ahora para consultar 'palabra clave',
- Busco nuevamente usando la aplicación, de nuevo se devuelven 6 resultados.
Analicé nuestra configuración y no encontramos ningún almacenamiento en caché en ningún lugar. He depurado la búsqueda, y no hay un código de almacenamiento en caché, searcher.search
returns 6 resultados.
¿El caché de Lucene resulta de alguna manera interno? ¿Qué propiedades, etc. debería verificar?
Lo resolví recreando
IndexSearcher
cada vez que se actualiza el índice. Esto resolvió el problema. Creo que bajo las sábanas hace más o menos lo que dijiste. –reopen() es más eficiente, ya que al recrearlo hace que se lean todos los archivos de segmento, pero volver a abrir() sabe solo leer los segmentos que se han actualizado desde la última apertura. – Cowan