2010-06-18 5 views
7

Qual è il modo migliore per ottenere l'indicizzazione in tempo reale di Lucene?Lucene indicizzazione in tempo reale?

+1

Indicizzazione in tempo reale di cosa? Potresti spiegare un po 'di più quello che stai cercando. –

+0

Dopo aver lavorato per 2 anni a questa attività in solr, devo dire che Solr non è la piattaforma giusta per l'indicizzazione in tempo reale. I commit sono molto pesanti su indici di grandi dimensioni: ho sentito di installazioni di grandi dimensioni che riescono a malapena a gestire 1 commit all'ora. Detto questo, un recente progetto chiamato Lucandra potrebbe dimostrarsi promettente - Non riesco a trovare nessun documento ora, ma pensavo di aver sentito qualcosa su nessun bisogno di commettere. http://github.com/tjake/Lucandra#readme –

+1

Devi spiegare di più - non esiste un significato specifico per "tempo reale": almeno è necessario specificare quale sarebbe il ritardo accettabile. Soft realtime (ad esempio, occorrono 5-10 secondi per mostrare gli aggiornamenti) non è difficile, ad esempio per indici non enormi. – StaxMan

risposta

4

Ottenere un lettore di indici dal writer dell'indice.

Aggiornamento: Sembra che il metodo corrente sia l'oggetto open a directory reader using an index writer.

+0

Come può essere utile per l'indicizzazione in tempo reale? – Mikos

+3

Consentendo alle ricerche di trovare documenti prima di un punto di commit. Il lettore ottenuto dallo scrittore viene continuamente aggiornato man mano che i documenti vengono aggiunti. –

+1

Durante il tentativo di eseguire IndexReader reader = indexWriter.getReader(); Il metodo getReader() dal tipo IndexWriter non è visibile. http://lucene.apache.org/core/4_7_2/core/org/apache/lucene/index/IndexWriter.html?is-external=true –

2
+0

Zoie ha promesso, tuttavia ho trovato la documentazione e gli esempi di codice gravemente carenti. Inoltre, con Zoie, l'indicizzazione è veloce se i documenti da indicizzare sono in pila, ma l'indicizzazione di alcuni documenti alla volta è in realtà estremamente lenta. Personalmente ho scoperto che Lucene è una API più facile da usare. –

1

SolrCloud sembra essere molto promettente. È ancora molto nuovo, ma fornirà l'indicizzazione Solr distribuita nello spirito NoSQL.

8

Lucene ha una funzionalità chiamata ricerca quasi in tempo reale per soddisfare esattamente questa esigenza.

Richiede che IndexReader sia nella stessa JVM di IndexWriter.

È possibile apportare modifiche a IndexWriter e quindi aprire un lettore direttamente dal writer utilizzando IndexReader.open (writer) o nelle versioni precedenti di Lucene writer.getReader(). Questa chiamata sarà normalmente molto veloce (in proporzione al numero di modifiche apportate dall'ultima apertura di un lettore) in quanto evita il costoso commit normalmente richiesto per l'apertura di un lettore. È in grado di cercare le modifiche non impegnate nello scrittore.

Questo lettore cerca ancora un'istantanea ad orario specifico dallo scrittore, cioè tutte le modifiche a partire da quando l'hai aperta.