Pregunta

Me estoy jugando con una búsqueda con tecnología de Solr para mi aplicación web, y pensé que sería mejor usar el DataImportHandler para manejar la sincronización con la aplicación a través de la base de datos. Me gusta la elegancia de sólo la comprobación del 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 o bien enviar un mensaje explícito a Solr desde el cliente cuando se elimina un documento, o podría añadir un "borrado" de la bandera y dejar el objeto en la base de datos, de modo que Solr se dará cuenta de que el documento ha cambiado y ahora está "borrado ". Podría agregar un filtro de consulta que no tendría en cuenta los resultados con la bandera eliminado, pero parece ineficaz para incluir todos los documentos eliminados en el índice Lucene. ¿Qué hacen otras personas?

¿Fue útil?

Solución

Estas son las opciones:

  • DIH comandos especiales $ o $ deleteDocById deleteDocByQuery (requiere Solr 1.4 +)
  • Utilice el parámetro limpia del DIH para borrar todo el índice antes de la importación.
  • preImportDeleteQuery para definir lo que va a ser limpiado antes de importar. (Requiere Solr 1.4 +)
  • Usar la base de datos activa en lugar de DIH para gestionar la actualización del índice.
  • Si está utilizando algún tipo de ORM utilizar sus capacidades de interceptación en lugar de DIH. Por ejemplo, puede usar hibernación acontecimientos para actualizar el índice en la actualización, insertar o eliminar.

Otros consejos

Me gustaría tener un "borrado" bandera de modo que en realidad no elimino mis datos! Depende de lo paranoico que eres. Me gustan las sugerencias de Mauricio ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top