Klasse DirectoryReader
DirectoryReader ist eine Implementierung von CompositeReader die Indizes in a lesen kann Verzeichnis.
DirectoryReader Instanzen werden normalerweise mit einem Aufruf einer der statischen erstellt Open()
Methoden, zB Öffnen (Verzeichnis).
Aus Effizienzgründen wird in dieser API häufig auf Dokumente über verwiesen Dokumentnummern, nicht negative Ganzzahlen, die jeweils ein eindeutiges Dokument im Index benennen. Diese Dokumentnummern sind kurzlebig – sie können sich ändern, wenn Dokumente zu einem Index hinzugefügt oder daraus gelöscht werden. Kunden sollten sich daher nicht darauf verlassen, dass ein bestimmtes Dokument zwischen den Sitzungen dieselbe Nummer hat.
HINWEIS: IndexReader Instanzen sind vollständig Thread-sicher, was bedeutet, dass mehrere Threads gleichzeitig jede ihrer Methoden aufrufen können. Wenn Ihre Anwendung eine externe Synchronisierung erfordert, sollten Sie dies tun nicht synchronisieren auf dem IndexReader Beispiel; Verwenden Sie stattdessen Ihre eigenen (Nicht-Lucene-)Objekte.
Geerbte Mitglieder
Versammlung: DistributedLucene.Net.dll
Syntax
public abstract class DirectoryReader : BaseCompositeReader<AtomicReader>, IIdentifiableSurrogate
Konstruktoren
Name und Vorname | Beschreibung |
---|---|
DirectoryReader(Verzeichnis, AtomicReader[]) | Experte: Konstruiert a DirectoryReader auf dem gegebenen |
DirectoryReader(String, NCacheVerzeichnis, Typ) |
Felder
Name und Vorname | Beschreibung |
---|---|
DEFAULT_TERMS_INDEX_DIVISOR | StandardtermInfosIndexDivisor. |
m_verzeichnis | Das Indexverzeichnis. |
Ferienhäuser
Name und Vorname | Beschreibung |
---|---|
AllowPartialResutls | Legen Sie das Verhalten des Ergebnisses im Falle eines Teilclusters fest |
Verzeichnis | Gibt das Verzeichnis zurück, in dem sich dieser Index befindet. |
IndexCommit | Experte: Rückgabe der IndexCommit die dieser Reader geöffnet hat. @lucene.experimental |
Version | Versionsnummer, wenn dies IndexReader wurde geöffnet. Diese Methode gibt die im Commit aufgezeichnete Version zurück, die der Reader geöffnet hat. Diese Version wird bei jeder Änderung mit erweitert IndexWriter. |
Methoden
Name und Vorname | Beschreibung |
---|---|
DoOpenIfChanged() | Implementieren Sie diese Methode zur Unterstützung OpenIfChanged (DirectoryReader). Wenn dieser Reader das erneute Öffnen nicht unterstützt, kehren Sie zurück |
DoOpenIfChanged(IndexCommit) | Implementieren Sie diese Methode zur Unterstützung OpenIfChanged(DirectoryReader, IndexCommit). Wenn dieser Reader das erneute Öffnen von einem bestimmten nicht unterstützt IndexCommit, Wurf |
DoOpenIfChanged(IndexWriter, Boolesch) | Implementieren Sie diese Methode zur Unterstützung OpenIfChanged(DirectoryReader, IndexWriter, Boolesch). Wenn dieser Reader Reopen from nicht unterstützt IndexWriter, Wurf |
IndexExists(Verzeichnis) | Rücksendungen |
Ist aktuell() | Überprüfen Sie, ob sich seit dem Öffnen dieses Readers neue Änderungen am Index ergeben haben. Wenn dieser Reader durch Aufrufen einer Überladung von erstellt wurde Öffnen (Verzeichnis), dann prüft diese Methode, ob weitere Commits (siehe Verpflichten()) im Verzeichnis aufgetreten sind. Wenn es sich bei diesem Reader stattdessen um einen Fast-Echtzeit-Reader handelt (d. h. erhalten durch einen Aufruf von
Öffnen (IndexWriter, Boolesch), oder durch Aufrufen einer Überladung von OpenIfChanged (DirectoryReader)
auf einem Fast-Echtzeit-Lesegerät), dann prüft diese Methode, ob entweder ein neuer Commit stattgefunden hat oder neue nicht festgeschriebene Änderungen über den Writer stattgefunden haben. Beachten Sie, dass diese Methode auch dann zurückkehrt, wenn der Writer nur das Zusammenführen durchgeführt hat Jedenfalls, wenn dies zurückkehrt |
ListCommits(Verzeichnis) | Gibt alle Commit-Punkte zurück, die in der vorhanden sind Verzeichnis. Normalerweise, weil die Standardeinstellung ist KeepOnlyLastCommitDeletionPolicy, gäbe es nur einen Übergabepunkt. Aber wenn Sie eine benutzerdefinierte verwenden IndexDeletionPolicy dann könnte es viele Commits geben. Sobald Sie einen bestimmten Commit haben, können Sie einen Reader darauf öffnen, indem Sie aufrufen Öffnen (IndexCommit) Es muss mindestens ein Commit in der Datei vorhanden sein Verzeichnis, andernfalls löst diese Methode aus IndexNotFoundException. Beachten Sie, dass, wenn ein Commit ausgeführt wird, während diese Methode ausgeführt wird, dieses Commit zurückgegeben werden kann oder nicht. |
Öffnen (IndexCommit) | Experte: gibt an IndexReader Lesen des Index in der gegebenen IndexCommit. |
Öffnen (IndexCommit, Int32) | Experte: gibt an IndexReader Lesen des Index in der gegebenen
IndexCommit und |
Öffnen (IndexWriter, Boolesch) | Öffnen Sie nahezu in Echtzeit IndexReader von dem IndexWriter. @lucene.experimental |
Öffnen (Verzeichnis) | Gibt a zurück IndexReader Lesen des Index in der gegebenen Verzeichnis |
Öffnen (Verzeichnis, Int32) | Experte: Retouren a IndexReader Lesen des Index in der gegebenen Verzeichnis mit dem gegebenen termInfosIndexDivisor. |
OpenIfChanged (DirectoryReader) | Wenn sich der Index geändert hat, seit der bereitgestellte Reader geöffnet wurde, öffnen Sie einen neuen Reader und geben Sie ihn zurück. sonst zurück
Diese Methode ist in der Regel weitaus kostengünstiger als das Öffnen eines völlig neuen DirectoryReader da es Ressourcen (z. B. Unterleser) mit den bereitgestellten teilt DirectoryReader, wenn möglich. Das bereitgestellte Lesegerät wird nicht entsorgt (Sie sind dafür verantwortlich); Wenn ein neues Lesegerät zurückgegeben wird, müssen Sie es schließlich auch entsorgen. Stellen Sie sicher, dass Sie niemals einen Reader entsorgen, während andere Threads ihn noch verwenden; sehen SearcherManager um die Verwaltung zu vereinfachen. |
OpenIfChanged(DirectoryReader, IndexCommit) | Besitzt das IndexCommit sich von dem unterscheidet, wonach der bereitgestellte Reader sucht, öffnen Sie einen neuen Reader und geben Sie ihn zurück; sonst zurück |
OpenIfChanged(DirectoryReader, IndexWriter, Boolesch) | Experte: Wenn es Änderungen gibt (festgelegt oder nicht) in der
IndexWriter im Vergleich zu dem, was der bereitgestellte Reader sucht, öffnen Sie ihn und geben Sie einen neuen zurück
IndexReader Suchen sowohl nach festgeschriebenen als auch nicht festgeschriebenen Änderungen des Schreibers; sonst zurück Dies ermöglicht eine Suche "nahezu in Echtzeit", indem Änderungen, die während einer IndexWriter Session kann schnell für die Suche verfügbar gemacht werden, ohne den Writer zu schließen oder aufzurufen Verpflichten(). Es ist in der Nähe von Echtzeit, da es keine feste Garantie dafür gibt, wie schnell Sie ein neues Lesegerät erhalten, nachdem Sie Änderungen vorgenommen haben IndexWriter. Sie müssen in Ihrer Situation experimentieren, um festzustellen, ob es schnell genug ist. Da dies eine neue und experimentelle Funktion ist, melden Sie bitte Ihre Ergebnisse, damit wir lernen, uns verbessern und iterieren können. Beim allerersten Aufruf dieser Methode unternimmt diese Writer-Instanz alle Anstrengungen, um die Reader, die sie öffnet, für Zusammenführungen, Anwenden von Löschvorgängen usw. zu bündeln. Dies bedeutet, dass zusätzliche Ressourcen (RAM, Dateideskriptoren, CPU-Zeit) verbraucht werden. Für eine geringere Latenz beim erneuten Öffnen eines Readers sollten Sie anrufen MergedSegmentWarmer (auf IndexWriterConfig), um ein neu zusammengeführtes Segment vorzuwärmen, bevor es in den Index übernommen wird. Dies ist wichtig, um die Verzögerung zwischen Index und Suche nach einer großen Zusammenführung zu minimieren. Wenn in einem anderen Thread ein AddIndexes*-Aufruf läuft, dann durchsucht dieser Reader nur die bisher erfolgreich kopierten Segmente aus dem Fremdindex. HINWEIS: Sobald der Writer entsorgt ist, können alle ausstehenden Reader weiter verwendet werden. Wenn Sie jedoch versuchen, einen dieser Reader erneut zu öffnen, werden Sie auf ein treffen @lucene.experimental |