2009-10-12 20 views
16

Sto giocando con una ricerca basata su Solr per la mia webapp, e ho pensato che sarebbe stato meglio usare DataImportHandler per gestire la sincronizzazione con l'app tramite il database. Mi piace l'eleganza di controllare solo il campo last_updated_date. Roba buona. Tuttavia, non so come gestire l'eliminazione di documenti con questo approccio. Per come la vedo io, ho 2 scelte. Potrei inviare un messaggio esplicito a Solr dal client quando un documento viene cancellato, oppure aggiungere un flag "eliminato" e lasciare l'oggetto nel database, in modo che Solr possa notare che il documento è cambiato ed è ora "cancellato" ". Potrei aggiungere un filtro di query che ignorerebbe i risultati con il flag eliminato, ma sembra inefficiente includere tutti i documenti cancellati nell'indice di Lucene. Cosa fanno gli altri?Solr DIH - Come gestire i documenti cancellati?

risposta

20

Queste sono le opzioni:

  • Usa DIH special commands $ deleteDocById o $ deleteDocByQuery (richiede Solr 1.4+)
  • Utilizzare la clean parameter di DIH per cancellare l'intero indice prima di importare.
  • Utilizzare preImportDeleteQuery per definire cosa verrà ripulito prima dell'importazione. (richiede Solr 1.4+)
  • Utilizzare i trigger di database invece di DIH per gestire l'aggiornamento dell'indice.
  • Se stai usando una sorta di ORM usa le sue capacità di intercettazione invece di DIH. Ad esempio, è possibile utilizzare hibernate events per aggiornare l'indice durante l'aggiornamento, l'inserimento o l'eliminazione.
+0

Questa è una grande lista! Sto ancora usando 1.3, ma questa è una ragione convincente per guardare al passaggio. –

+0

sì, Solr 1.4 è appena andato in onda, la versione finale è imminente. –

+0

Ciao Mauricio, ci sono dei buoni esempi su come utilizzare preImportDeleteQuery quando si esegue l'importazione delta sui documenti cancellati? – Joyce

2

Mi piace avere un flag "eliminato", quindi in realtà non eliminare i miei dati! Dipende da come sei paranoico. Mi piacciono i suggerimenti di Mauricio ...

+0

flag "cancellato" = buona chiamata! – Brian

Problemi correlati