2013-09-23 11 views
6

Es gibt viele Arten von Verzeichnistypen, die zum Erstellen eines Lucene-Index verwendet werden können. Welches ist am besten geeignet, um die Suchgeschwindigkeit auf einer RedHat-Maschine zu verbessern (nicht sicher, ob das Betriebssystem relevant ist oder nicht)?Auswählen des richtigen Lucene-Verzeichnisses

  • RAMDirectory - Kann nicht verwenden, ist Index zu groß
  • SimpleFSDirectory - kann das nicht sein, weil es 'Simple' ist ...
  • MMapDirectory - Vielleicht ist dies ein?
  • NIOFSDirectory - Oder diese?
  • Any better options?

Antwort

7

Es sei denn, Sie haben einen guten Grund einen über den anderen zu wählen, würde ich einfach FSDirectory.open(File) Aufruf empfehlen. Dadurch kann Lucene entscheiden, welche Implementierung ideal ist.

Für die Neugierigen, hier ist, wie die Entscheidung getroffen wird:

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); 
    } 
} 

Wenn Sie versuchen mögen, die ideale Wahl als das sein sichereren darum kann ich nur empfehlen, sie und Profilierung versuchen, um zu sehen, Das bietet die beste Leistung.

+0

nett! und ich glaube, dass ich dasselbe tun muss, wenn ich den Index erstelle, oder? – Gevorg

+0

Ja, ein Verzeichnis kann auf die gleiche Weise geöffnet werden, wenn ein Index erstellt oder ersetzt wird oder wenn ein vorhandenes geöffnet wird. – femtoRgon

Verwandte Themen