Solr DIH - Come gestire i documenti eliminati?
-
20-09-2019 - |
Domanda
Sto giocando intorno con una ricerca Solr alimentato per il mio webapp, e ho pensato che sarebbe stato meglio utilizzare il DataImportHandler per gestire la sincronizzazione con l'applicazione tramite il database. Mi piace l'eleganza del solo controllando il campo last_updated_date
. Roba buona. Tuttavia, non so come gestire i documenti eliminazione con questo approccio. Il mio modo di vedere, ho 2 scelte. Potrei o inviare un messaggio esplicito a Solr dal client quando un documento viene eliminato, o potrei aggiungere un "cancellato" bandiera e lasciare l'oggetto nel database, in modo che Solr noterà che il documento è cambiato e ora è "cancellato ". Potrei aggiungere un filtro query che non terrebbe conto dei risultati con la bandiera eliminata, ma sembra inefficiente per includere tutti i documenti eliminati dell'indice Lucene. Che cosa fanno altre persone fanno?
Soluzione
Queste sono le opzioni:
- DIH comandi speciali $ deleteDocById o $ deleteDocByQuery (richiede Solr 1.4 +)
- Utilizza il pulita parametro di DIH per cancellare l'intero indice prima di importare.
- preImportDeleteQuery per definire ciò che sta per essere ripulito prima di importare. (Richiede Solr 1.4 +)
- Usa database trigger invece di DIH per gestire l'aggiornamento dell'indice.
- Se si sta utilizzando una sorta di ORM utilizzare le sue capacità di intercettazione, invece di DIH. Ad esempio è possibile utilizzare hibernate eventi per aggiornare l'indice di aggiornamento, inserire o cancellare.
Altri suggerimenti
Mi piace avere un "cancellato" bandiera in modo da Io in realtà non cancellare i miei dati! Dipende da come siete paranoici. Mi piace suggerimenti di Mauricio ...