2010-10-12 10 views
9

Attualmente sto chiamando il metodo di ottimizzazione dell'indice dopo il completamento della scrittura. Poiché il mio set di dati è enorme, è necessario molto tempo (e richiede più spazio (2 dimensioni reali)) per ottimizzare l'indice. Sono molto preoccupato perché molti documenti sono inclusi frequentemente nell'indice.è obbligatorio ottimizzare l'indice di lucene dopo la scrittura?

Così

  1. è ok per spegnere ottimizzare?
  2. Quali sono le implicazioni sulle prestazioni, ad esempio quanto più lenta è l'interrogazione quando non è ottimizzata?

Acclamazioni

risposta

14

Il Lucene FAQ dice:

Qual è l'ottimizzazione indice e quando dovrei utilizzarlo?

La classe IndexWriter supporta un metodo optimize() che compatta il database dell'indice e accelera le query. Si consiglia di utilizzare questo metodo dopo aver eseguito un'indicizzazione completa del set di documenti o dopo aggiornamenti incrementali dell'indice. Se l'aggiornamento incrementale aggiunge documenti frequentemente, si desidera eseguire l'ottimizzazione solo una volta ogni tanto per evitare il sovraccarico aggiuntivo dell'ottimizzazione.

Se decido di non ottimizzare l'indice, quando i documenti eliminati verranno effettivamente eliminati?

I documenti cancellati sono contrassegnati come cancellati. Tuttavia, lo spazio che consumano nell'indice non viene recuperato finché l'indice non viene ottimizzato. Questo spazio verrà infine recuperato dal momento che più documenti vengono aggiunti all'indice, anche se l'indice non viene ottimizzato.

+0

questo è davvero utile ....... :) – RameshVel

1

Si conoscono i dati migliori quindi suggerirei di eseguire alcuni test per misurare la velocità di esecuzione delle query con e senza il passaggio optimize.

In base ai javadoc, "in ambienti con aggiornamenti frequenti, l'ottimizzazione viene eseguita meglio durante i periodi di basso volume, se non del tutto". Devi solo ottimizzare quando necessario. Se solo il 5% dei tuoi documenti è cambiato rispetto all'ultima ottimizzazione, non è necessario, quindi tieni conto della frequenza con cui i documenti cambiano. Forse puoi ridurre il tempo di optimise, diciamo una volta ogni poche ore o una volta al giorno.

Inoltre, dare un'occhiata a this thread in cui si sconsiglia di chiamare l'ottimizzazione a tutti in un ambiente i cui indici sono costantemente aggiornati e invece di scegliere di impostare un valore basso mergeFactor.

+0

grazie per il collegamento .. :) – RameshVel

Problemi correlati