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?

È stato utile?

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 ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top