Ich denke, Sie haben einige Dinge in Ihrer Frage durcheinander gebracht. Lucene (ich weiß nichts über Lucene, NET, aber ich nehme an, es ist dasselbe) ist eine Bibliothek, die zum Analysieren, Aufteilen in Token und Speichern von Dokumenten verwendet wird, um sie später abfragen und abrufen zu können. Lucene hat ein ziemlich altes, aber effektives Modell. Es verwendet umgekehrte Bäume, um Dokumente zu finden und abzurufen. Ohne weitere Details werden alle Dokumente in Token (Begriffe) aufgeteilt, und für jeden Begriff wird eine Datenstruktur gepflegt, in der alle Dokumente gespeichert sind, die den angegebenen Begriff enthalten. Da eine Datenstruktur als BTree, Hash-Tabelle und in den neuesten Hauptrevisionen verwendet werden kann, können Sie sogar Ihre eigenen Datenstrukturen einbinden.
Ein BTree (siehe Wikipedia-Seite für weitere Details) ist eine Art Baumdatenstruktur , die für die Arbeit mit großen Datenblöcken geeignet ist und häufig zum Speichern von baumartig geordneten Strukturen auf der Festplatte verwendet wird. Für In-Memory-Speicher sind andere Bäume besser geeignet.
Murmur-Hash (siehe Wikipedia-Seite für weitere Details) ist eine Familie von Hash-Funktionen, die in der Hash-Tabelle verwendet werden. Die Implementierung der Hash-Tabelle ist nicht wichtig. Es kann sich um eine verkettete Standardimplementierung oder ein erweitertes offenes Hash-Adressierungsschema handeln. Die Idee ist, dass die Hash-Tabellen es einem ermöglichen, schnell einen Schlüssel aus einem ungeordneten Schlüsselsatz zu erhalten und auf Aufgaben wie: Ist dieser Schlüssel Teil dieses Schlüsselsatzes zu antworten? Welchen Wert hat dieser Schlüssel?
Nun zurück zu Ihrem Hauptproblem. Sie haben eine Bibliothek (Lucene) und für Datenstrukturen werden beide Datenstrukturen in Lucene verwendet. Jetzt sehen Sie, dass es nicht möglich ist, Ihre Frage in diesen Begriffen zu beantworten, da sie nicht vergleichbar sind.
In Bezug auf Ihren Platzbedarf und Ihre Leistung ist dies jedoch ein Teil der Frage. Zunächst müssen Sie wissen, welche Art von Operationen Sie implementieren müssen.
Benötigen Sie nur einen Wert für den Schlüssel oder müssen Sie alle Elemente in einem Bereich finden? Mit anderen Worten, brauchen Sie Ordnung oder nicht? Wenn Sie dies tun, kann ein Baum helfen. Wenn Sie dies nicht tun, kann stattdessen eine schnellere Hash-Tabelle verwendet werden.
Haben Sie viele Daten, die nicht in den Speicher passen? Wenn ja, würde eine festplattenbasierte Lösung helfen (wie BTree). Wenn Ihre Daten in den Speicher passen, verwenden Sie die schnellste In-Memory-Lösung und verwenden Sie die Festplatte nur als Speicher (mit einer anderen Struktur, viel einfacher).