Lucene ricerca a tutto testo di 6 milioni di record

0

Voglio implementare Lucene per la ricerca a testo integrale. Ho una tabella con 6 milioni di record in un database SQL. Ogni minuto circa mille nuove righe verranno aggiunte dall'applicazione.

La creazione di indici in Lucene richiede molto tempo. Ogni volta che elimini o creo un nuovo indice dal database perché l'utente deve vedere i record aggiornati sulla ricerca.

Come posso avere una capacità di ricerca abbastanza veloce?

1) Ho bisogno di valori aggiornati e cronologici nella ricerca 2) Il ritardo massimo dovrebbe essere di 2 secondi

    
posta user3326558 01.12.2014 - 13:18
fonte

1 risposta

2

Gli indici Lucene non devono essere ricreati da zero ogni volta che vengono cambiati. Proprio come le tue tabelle di database, puoi inserire nuovi record, eliminare quelli vecchi e influire su un aggiornamento utilizzando una coppia di eliminazione / aggiunta.

La maggior parte dei database ha un meccanismo che consente di chiamare il codice esterno, e puoi sfruttarlo nei trigger che funzionano su INSERT , UPDATE e DELETE per mantenere il tuo indice. In alternativa, puoi eseguire gli aggiornamenti al di fuori del database quando arrivano i tuoi batch di dati, ma rischi di avere problemi di sincronizzazione (più grandi) se qualcosa non funziona nel mid-stream.

Inoltre, considera se sia necessario o meno l'uso di Lucene. Oracle, PostgreSQL e MySQL (e probabilmente altri) hanno tutti una ricerca full-text preintegrata che può essere abbastanza buona per la tua applicazione e non avrà bisogno di molto lavoro aggiuntivo da parte tua.

    
risposta data 01.12.2014 - 22:00
fonte

Leggi altre domande sui tag