Klasse IndexReader
IndexReader ist eine abstrakte Klasse, die eine Schnittstelle für den Zugriff auf einen Index bereitstellt. Die Suche nach einem Index erfolgt vollständig über diese abstrakte Schnittstelle, so dass jede Unterklasse, die sie implementiert, durchsuchbar ist.
Es gibt zwei verschiedene Arten von IndexReaders:
- AtomicReader: Diese Indizes bestehen nicht aus mehreren Unterlesern, sie sind atomar. Sie unterstützen den Abruf gespeicherter Felder, Dokumentwerte, Begriffe und Buchungen.
- CompositeReader: Instanzen (wie DirectoryReader) dieses Readers kann nur verwendet werden, um gespeicherte Felder vom Basiswert abzurufen AtomicReaders, es ist jedoch nicht möglich, Beiträge direkt abzurufen. Rufen Sie dazu die Unterleser per auf GetSequentialSubReaders(). Alternativ können Sie eine nachahmen AtomicReader (mit einer erheblichen Verlangsamung), indem zusammengesetzte Leser mit umwickelt werden SlowCompositeReaderWrapper.
IndexReader Instanzen für Indizes auf der Festplatte werden normalerweise mit einem Aufruf einer der statischen erstellt DirectoryReader.Open()
Methoden, z Öffnen (Verzeichnis). DirectoryReader erbt die CompositeReader In der abstrakten Klasse ist es nicht möglich, Beiträge direkt abzurufen.
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.
Erbe
Versammlung: DistributedLucene.Net.dll
Syntax
public abstract class IndexReader : IDisposable, IIdentifiableSurrogate
Konstruktoren
Name und Vorname | Beschreibung |
---|---|
IndexReader() | |
IndexReader(String, IRPCTransport, Typ) |
Felder
Name und Vorname | Beschreibung |
---|---|
_basesurrogateObject | |
Noten |
Ferienhäuser
Name und Vorname | Beschreibung |
---|---|
Teilergebnisse zulassen | Auf „false“ setzen, um einen Gesamtfehler zurückzugeben, wenn die Anforderung Teilergebnisse liefern würde. Auf „true“ setzen, was im Falle eines partiellen Clusters Teilergebnisse zulässt. |
CombinedCoreAndDeletesKey | Experte: Gibt dafür einen Schlüssel zurück IndexReader dazu gehören auch Löschungen, so IFieldCache/CachingWrapperFilter kann es wiederfinden. Dieser Schlüssel darf keine Equals()/GetHashCode()-Methoden haben, also bedeutet „gleich“ „identisch“. |
Kontext | Experte: Gibt die Wurzel zurück IndexReaderContext hierfür IndexReader's Sub-Reader-Baum. Wenn dieser Leser aus Unterlesern besteht, also ein zusammengesetzter Leser ist, gibt diese Methode a zurück CompositeReaderContext Enthält die direkten untergeordneten Elemente des Readers sowie eine Ansicht der atomaren Blattkontexte des Reader-Baums. Alle Unter- IndexReaderContext Instanzen, auf die im Kontext der obersten Ebene dieses Lesers verwiesen wird, sind für diesen Leser privat und werden nicht mit einem anderen Kontextbaum geteilt. Zum Beispiel, IndexSucher verwendet diese API, um die Suche jeweils durch einen einzelnen Blattleser voranzutreiben. Wenn dieser Leser nicht aus untergeordneten Lesern besteht, gibt diese Methode einen zurück AtomicReaderContext. Hinweis: Alle Unter-CompositeReaderContext Instanzen, auf die in diesem Kontext der obersten Ebene verwiesen wird, werden nicht unterstützt Blätter. Aus Leistungsgründen behält nur der Kontext der obersten Ebene die praktische Blattansicht bei. |
CoreCacheKey | Experte: Gibt dafür einen Schlüssel zurück IndexReader, damit IFieldCache/CachingWrapperFilter kann es wieder finden. Dieser Schlüssel darf keine Equals()/GetHashCode()-Methoden haben, daher bedeutet „equals“ „identisch“. |
HatLöschungen | Rücksendungen |
Blätter | Gibt die Blätter des Lesers oder sich selbst zurück, wenn dieser Leser atomar ist. Dies ist ein praktischer Methodenaufruf |
LuceneRPCTransportLayer | |
MaxDoc | Gibt eins größer als die größtmögliche Dokumentnummer zurück. dies kann verwendet werden, um beispielsweise zu bestimmen, wie groß ein Array zugewiesen werden soll, das ein Element für jede Dokumentnummer in einem Index haben wird. |
NumDeletedDocs | Gibt die Anzahl der gelöschten Dokumente zurück. |
NumDocs | Gibt die Anzahl der Dokumente in diesem Index zurück. |
RefCount | Experte: gibt den aktuellen refCount für diesen Reader zurück |
Methoden
Name und Vorname | Beschreibung |
---|---|
AddReaderClosedListener(IndexReader.IReaderClosedListener) | Experte: fügt a hinzu IndexReader.IReaderClosedListener. Der bereitgestellte Listener wird aufgerufen, wenn dieser Reader geschlossen wird. @lucene.experimental |
DecRef() | Experte: nimmt ab RefCount von diesem IndexReader Beispiel. Wenn die RefCount fällt auf 0, dann wird dieser Leser entsorgt. Wenn eine Ausnahme auftritt, wird die RefCount ist unverändert. |
Entsorgen() | Schließt Dateien, die diesem Index zugeordnet sind. Speichert auch alle neuen Löschungen auf der Festplatte. Nach diesem Aufruf sollten keine weiteren Methoden aufgerufen werden. |
Entsorgen (Boolean) | Schließt mit diesem Index verknüpfte Dateien. Diese Methode implementiert das Einwegmuster. Es kann überschrieben werden, um alle verwalteten oder nicht verwalteten Ressourcen zu verwerfen, aber rufen Sie unbedingt an |
DocFreq(Laufzeit) | Gibt die Anzahl der Dokumente zurück, die die enthalten
|
DoClose() | Geräte schließen. |
Dokument(Int64) | Gibt die gespeicherten Felder der zurück Anmerkungen: Aus Leistungsgründen überprüft diese Methode nicht, ob das angeforderte Dokument gelöscht wurde, und daher kann die Abfrage nach einem gelöschten Dokument zu nicht spezifizierten Ergebnissen führen. Normalerweise ist dies nicht erforderlich, Sie können jedoch testen, ob das Dokument gelöscht wurde, indem Sie das überprüfen IBits zurückgekehrt von GetLiveDocs(IndexReader). Anmerkungen: nur der Inhalt eines Feldes wird zurückgegeben, wenn dieses Feld während der Indizierung gespeichert wurde. Metadaten wie boost, omitNorm, IndexOptions, tokenized etc. bleiben nicht erhalten. |
Dokument(Int64, ISet ) | Like Dokument(Int64) sondern lädt nur die angegebenen Felder. Beachten Sie, dass dies einfach Zucker für ist DocumentStoredFieldVisitor(ISet ). |
Dokument (Int64, StoredFieldVisitor) | Experte: Besucht die Felder eines gespeicherten Dokuments, um jedes Feld individuell zu verarbeiten/zu laden. Wenn Sie einfach alle Felder laden möchten, verwenden Sie
|
Gewährleisten() | wirft |
GetDocCount(String) | Gibt die Anzahl der Dokumente zurück, die mindestens einen Begriff für dieses Feld haben, oder -1, wenn dieses Maß nicht vom Codec gespeichert wird. Beachten Sie, dass diese Maßnahme, genau wie andere Laufzeitkennzahlen, gelöschte Dokumente nicht berücksichtigt. |
GetMaxDocsPerIndex() | |
GetSumDocFreq(String) | Gibt die Summe von zurück DokFreq für alle Begriffe in diesem Feld oder -1, wenn dieses Maß nicht vom Codec gespeichert wird. Beachten Sie, dass diese Maßnahme, genau wie andere Laufzeitkennzahlen, gelöschte Dokumente nicht berücksichtigt. |
GetSumTotalTermFreq(String) | Gibt die Summe von zurück TotalTermFreq für alle Terme in diesem Feld, oder -1, wenn dieses Maß nicht vom Codec gespeichert wird (oder wenn dieses Feld Term freq und positions weglässt). Beachten Sie, dass diese Maßnahme, genau wie andere Begriffsmaße, gelöschte Dokumente nicht berücksichtigt. |
GetSurrogateId() | |
GetTermVector(Int64, String) | Termvektor für dieses Dokument und Feld abrufen, oder
|
GetTermVectors(Int64) | Begriffsvektoren für dieses Dokument abrufen oder |
InkRef() | Experte: erhöht die RefCount von diesem IndexReader Beispiel. RefCounts werden verwendet, um festzustellen, wann ein Lesegerät sicher entsorgt werden kann, dh sobald keine Referenzen mehr vorhanden sind. Rufen Sie unbedingt immer einen entsprechenden Ansprechpartner an DecRef(), in einer Finalklausel; andernfalls darf der Leser niemals entsorgt werden. Beachten Sie, dass Entsorgen (Boolean) ruft einfach an DecRef(), was bedeutet, dass die IndexReader wird erst wirklich entsorgt DecRef() wurde für alle ausstehenden Referenzen aufgerufen. |
Ö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. |
Ö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 |
RegisterParentReader(IndexReader) | Experte: Diese Methode wird von aufgerufen IndexReaders, die andere Reader umschließen (z CompositeReader or |
RemoveReaderClosedListener(IndexReader.IReaderClosedListener) | Experte: Entfernen Sie eine zuvor hinzugefügte IndexReader.IReaderClosedListener. @lucene.experimental |
TotalTermFreq(Laufzeit) | Gibt die Gesamtzahl der Vorkommen von zurück |
TryIncRef() | Experte: erhöht die RefCount von diesem IndexReader
Instanz nur, wenn die IndexReader wurde noch nicht entsorgt und geht zurück RefCounts werden verwendet, um festzustellen, wann ein Lesegerät sicher entsorgt werden kann, dh sobald keine Referenzen mehr vorhanden sind. Rufen Sie unbedingt immer einen entsprechenden Ansprechpartner an DecRef(), in einer Finalklausel; andernfalls darf der Leser niemals entsorgt werden. Beachten Sie, dass Entsorgen (Boolean) ruft einfach an DecRef(), was bedeutet, dass die IndexReader wird erst wirklich entsorgt DecRef() wurde für alle ausstehenden Referenzen aufgerufen. |