2009-10-12 9 views
16

Estoy jugando con una búsqueda de mi aplicación web basada en Solr, y pensé que sería mejor usar DataImportHandler para manejar la sincronización con la aplicación a través de la base de datos. Me gusta la elegancia de solo consultar el campo last_updated_date. Buen material. Sin embargo, no sé cómo manejar la eliminación de documentos con este enfoque. De la forma en que lo veo, tengo 2 opciones. Podría enviar un mensaje explícito a Solr desde el cliente cuando se elimine un documento, o podría agregar una marca "eliminada" y dejar el objeto en la base de datos, para que Solr note que el documento ha cambiado y ahora está "borrado" " Podría agregar un filtro de consulta que ignoraría los resultados con la marca eliminada, pero parece ineficaz incluir todos los documentos eliminados en el índice de Lucene. ¿Qué hacen otras personas?Solr DIH - ¿Cómo manejar documentos borrados?

Respuesta

20

Estas son las opciones:

  • Uso DIH special commands $ o $ deleteDocById deleteDocByQuery (Solr requiere 1.4+)
  • Utilice la clean parameter del DIH para borrar todo el índice antes de importar.
  • Use preImportDeleteQuery para definir qué se va a limpiar antes de importar. (requiere Solr 1.4+)
  • Utilice desencadenadores de base de datos en lugar de DIH para gestionar la actualización del índice.
  • Si está utilizando algún tipo de ORM, use sus capacidades de interceptación en lugar de DIH. Por ejemplo, puede usar hibernate events para actualizar el índice al actualizar, insertar o eliminar.
+0

¡Esa es una gran lista! Todavía uso 1.3, pero esa es una razón convincente para analizar el cambio. –

+0

sí, Solr 1.4 acaba de ser RC, la versión final es inminente. –

+0

Hola Mauricio, ¿hay algún buen ejemplo de cómo usar preImportDeleteQuery cuando realizas importación delta en documentos eliminados? – Joyce

2

Me gusta tener una marca "eliminada", así que en realidad no borro mis datos. Depende de lo paranoico que seas. Me gustan las sugerencias de Mauricio ...

+0

"deleted" flag = ¡Buena llamada! – Brian

Cuestiones relacionadas