2013-09-23 8 views
6

Esistono molti tipi di directory che possono essere utilizzati per creare un indice Lucene. Qual è il modo migliore per migliorare la velocità di ricerca su una macchina RedHat (non sono sicuro che il sistema operativo sia rilevante o meno)?Scelta della directory Lucene corretta

  • RAMDirectory - Non è possibile utilizzare, l'indice è troppo grande
  • SimpleFSDirectory - Non può essere questa perché è 'semplice' ...
  • MMapDirectory - Forse questo uno?
  • NIOFSDirectory - O questo?
  • Any better options?

risposta

7

Se non avete una buona ragione per scegliere uno sugli altri, io consiglierei semplicemente chiamando FSDirectory.open(File). Ciò consente a Lucene di prendere la decisione su quale sia l'implementazione ideale.

Per i curiosi, ecco come la decisione è presa:

public static FSDirectory open(File path, LockFactory lockFactory) throws IOException { 
    if ((Constants.WINDOWS || Constants.SUN_OS || Constants.LINUX) 
     && Constants.JRE_IS_64BIT && MMapDirectory.UNMAP_SUPPORTED) { 
    return new MMapDirectory(path, lockFactory); 
    } else if (Constants.WINDOWS) { 
    return new SimpleFSDirectory(path, lockFactory); 
    } else { 
    return new NIOFSDirectory(path, lockFactory); 
    } 
} 

Se si vuole cercare di essere più sicura di ottenere il ritiro ideale di questo, posso solo loro consiglio di provare e profilatura, per vedere che fornisce le migliori prestazioni.

+0

bello! e credo che dovrò fare la stessa cosa quando creerò l'indice, giusto? – Gevorg

+0

Sì, una directory può essere aperta allo stesso modo quando si crea o si sostituisce un indice o quando si apre uno esistente. – femtoRgon

Problemi correlati