lucene - Solr DIH-¿Cómo manejar documentos borrados?
dataimporthandler (2)
¡Me gusta tener una marca de "borrado" por lo que realmente no borro mis datos! Depende de lo paranoico que seas. Me gustan las sugerencias de Mauricio ...
Estoy jugando con una búsqueda basada en Solr para mi aplicación web, 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 marcar el campo last_updated_date
. Buen material. Sin embargo, no sé cómo manejar la eliminación de documentos con este enfoque. 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 un indicador "eliminado" y dejar el objeto en la base de datos, de modo que Solr notará que el documento ha cambiado y ahora se ha "eliminado". . " 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?
Estas son tus opciones:
- Use los comandos especiales DIH $ deleteDocById o $ deleteDocByQuery (requiere Solr 1.4+)
- Utilice el parámetro de limpieza de DIH para eliminar todo el índice antes de importar.
- Use preImportDeleteQuery para definir lo que se va a limpiar antes de importar. (requiere Solr 1.4+)
- Utilice los activadores de base de datos en lugar de DIH para administrar la actualización del índice.
- Si está utilizando algún tipo de ORM, use sus capacidades de intercepción en lugar de DIH. Por ejemplo, puede usar eventos de hibernación para actualizar el índice al actualizar, insertar o eliminar.