2010-10-29 13 views
6

Mi aplicación está utilizando el plugin de búsqueda Grails, usando Compass debajo.Plugin de búsqueda de Grails

Las tablas comienzan indizadas es aproximadamente 36   MB, y está construyendo índices de aproximadamente 350   MB. Esto es pequeño en la mayoría de los libros de personas.

Si eliminamos los índices e iniciamos la aplicación Grails, los archivos de índice se reconstruyen como se esperaba, pero luego de aproximadamente un día de ejecución, encontramos este error. Estamos llamando al 'reindex' en las instancias TellMeEntity, ya que se guardan para garantizar que el índice se actualice.

Excepción org.compass.core.engine.SearchEngineException: No se pudo eliminar alias [TellMeEntity] y ids [[almacenado/sin comprimir, indexado, omitNorms, omitTf]]; la excepción anidada es java.io.FileNotFoundException:/var/www/web17/log/mne/index/tellmeentity/segments_2 (No existe dicho archivo o directorio) en org.compass.core.lucene.engine.transaction.readcommitted.ReadCommittedTransaction (doDelete : 348)

Obviamente, una vez que se produce este error, el índice no se actualiza y las búsquedas no funcionan en los datos recién ingresados.

Hemos comprobado cosas simples como espacio en disco, etc. El 'segment_2' no existe, pero esperaría que Compass lo creara solo.

En el archivo grails-app/conf/Searchable.groovy:

....

mirrorChanges = true 
    bulkIndexOnStartup = "fork" 

....

En mi código:

....

def formInstance = new TellMeEntity(name:'form',dataOwner:session.community,createBy:session.zoner,tellMeSite:form).save() 
formInstance.reindex() 

....

Mi experiencia actual es que este código funciona bien durante aproximadamente 24 horas, pero luego comienza a dar problemas. Estamos generando unas 3000 entradas nuevas por día, lo que no parece un volumen alto, así que no creo que esté relacionado con el volumen.

¿Cómo se puede reparar este problema?

+0

¿En qué parte del código está reindexando? Sospecho que hay un archivo .lock en algún lugar que se creó y está causando sus problemas. Más código ayudaría. –

+0

El código ha sido actualizado. – user304217

+1

Se agregó un segmento de código. También estoy buscando no usar los índices de archivos locales predeterminados, sino almacenar el caché en la base de datos con JDBCDirectory. – user304217

Respuesta

0

disparar desde la cadera: ¿su ubicación de índice/var/www/web17/log/mne está sujeta a algún proceso de rotación del archivo de registro que por error intenta rotar los archivos de índice? 24 horas parece que algún trabajo basado en cron está interfiriendo aquí.

Cuestiones relacionadas