GroupDocs.Search für .NET 26.10 ist jetzt verfügbar. Dies ist ein großes Release: Das Indexformat wurde neu gestaltet, sodass Indizes weniger Speicherplatz auf der Festplatte benötigen, nur die Hälfte des RAMs verbrauchen und 2‑ bis 4‑mal schneller geöffnet werden können. Suche, Löschung, Optimierung und Bildsuche werden mehrfach bis zu hundertfach beschleunigt, Suchvorgänge warten nicht mehr auf die Indizierung, und Indexdaten sind durch Prüfsummen und atomare Updates geschützt.

Bestehende Indizes, die mit den Versionen 22.7–26.8 erstellt wurden, werden ohne erneutes Indizieren in das neue Format konvertiert. Das Release enthält 22 Änderungen: 4 neue Funktionen, 15 Verbesserungen und 3 Fehlerbehebungen.

Leistungs‑Highlights

Die meisten Verbesserungen steigen mit der Größe des Index und der Anzahl seiner Segmente.

Was Verbesserung in 26.10
RAM, das ein geladener Index benötigt 2‑mal weniger
Öffnen eines Index 2‑ bis 4‑mal schneller
Indexgröße auf Festplatte Wächst proportional zu den indizierten Daten; je größer der Index, desto größer die Einsparung
Suche nach einem Wort in großen Indizes Bis zu 2‑mal schneller; seltene Wörter 10‑ bis 40‑mal schneller
Unscharfe Suche in großen Indizes 2,5‑ bis 5‑mal schneller
Wildcard‑Suche in großen Indizes 2,5‑ bis 3‑mal schneller
Wildcard-, reguläre‑Ausdruck-, numerische‑Bereichs‑ und unscharfe Suche nach Chunks 7‑ bis 150‑mal schneller
Datumbereichssuche 2‑ bis 27‑mal schneller
Löschen von Dokumenten Hundertfach schneller, 4‑mal weniger Speicher, kein zusätzlicher Festplattenspeicher
Indexoptimierung 4‑mal schneller, 4‑mal weniger Speicher
Spitzen‑RAM während der Indizierung 2‑mal weniger
Abrufen des gespeicherten Textes eines Dokuments Bis zu 15‑mal schneller
Bildsuchdaten 2,9‑mal weniger Speicher, 6,6‑mal schneller geladen, 100‑mal schneller gespeichert; Reverse‑Image‑Search bis zu 1,8‑mal schneller
Suche, während der Index modifiziert wird Nicht mehr blockiert
Indexzuverlässigkeit Prüfsummen und atomare Änderungen; unterbrochene Vorgänge werden abgeschlossen oder zurückgerollt
Such‑Threads Alle Prozessorkerne standardmäßig; können jederzeit geändert werden

Neuigkeiten in diesem Release

Schlüssel Zusammenfassung Kategorie
SEARCHNET-3665 Implementierung der Möglichkeit, die Anzahl der Such‑Threads jederzeit zu ändern Funktion
SEARCHNET-3666 Implementierung einer Option zum Ersetzen nicht gepaarter Surrogat‑Zeichen Funktion
SEARCHNET-3667 Implementierung einer Option zum Überspringen von Begriffen, die ausschließlich aus gemischten Zeichen bestehen Funktion
SEARCHNET-3668 Implementierung der Indexversions‑Aktualisierung auf das neue Indexformat ohne erneutes Indizieren der Dokumente Funktion
SEARCHNET-3669 Optimierung des Festplattenplatzverbrauchs eines Index Verbesserung
SEARCHNET-3670 Optimierung des RAM‑Verbrauchs eines geladenen Index Verbesserung
SEARCHNET-3671 Optimierung der Index‑Ladegeschwindigkeit Verbesserung
SEARCHNET-3672 Optimierung der Suchgeschwindigkeit in großen Indizes Verbesserung
SEARCHNET-3673 Optimierung der unscharfen Suche Verbesserung
SEARCHNET-3674 Optimierung der Wildcard‑Suche Verbesserung
SEARCHNET-3675 Optimierung des Löschens und Aktualisierens von Dokumenten Verbesserung
SEARCHNET-3676 Optimierung des Index‑Optimierungs‑Vorgangs Verbesserung
SEARCHNET-3677 Ermöglicht Suche, während der Index modifiziert wird Verbesserung
SEARCHNET-3678 Verbesserung der Indexzuverlässigkeit Verbesserung
SEARCHNET-3679 Optimierung des Speicherverbrauchs während der Indizierung Verbesserung
SEARCHNET-3680 Optimierung des Abrufs von Dokumenttext Verbesserung
SEARCHNET-3681 Optimierung der Bildsuche Verbesserung
SEARCHNET-3682 Einheitliche Behandlung der Groß‑/Kleinschreibung auf allen Plattformen Verbesserung
SEARCHNET-3688 Optimierung der Suche nach Chunks Verbesserung
SEARCHNET-3683 Korrektur der Standardanzahl von Such‑Threads Fehlerbehebung
SEARCHNET-3684 Verhinderung inkonsistenter Indizierung nach Änderung der Begriffsdictionaries Fehlerbehebung
SEARCHNET-3685 Verhinderung des Zusammenführens von Indizes, die Text unterschiedlich verarbeiten Fehlerbehebung

Wichtige Funktionen

Indexspeicherung und Zuverlässigkeit

  • Die Indexgröße wächst jetzt proportional zu den indizierten Daten, sodass große Indizes mit vielen Segmenten am meisten Platz sparen.
  • Ein geladener Index benötigt nur die Hälfte des RAMs, und das Öffnen eines Index ist 2‑ bis 4‑mal schneller.
  • Indexdaten sind durch Prüfsummen geschützt, und alle Änderungen werden atomar angewendet. Wird ein Vorgang durch einen Fehler, Stromausfall oder Prozessende unterbrochen, bleibt der Index im vorherigen konsistenten Zustand.

Suche

  • Nur die Segmente, die die Abfragebegriffe enthalten, werden gelesen, was Wort‑, unscharfe, Wildcard‑ und Chunk‑Suche beschleunigt.
  • Die Suche nutzt standardmäßig alle Prozessorkerne, und die Anzahl der Threads kann jederzeit über IndexSettings.SearchThreads geändert werden.
  • Suchvorgänge und index‑modifizierende Operationen (Indizierung, Aktualisierung, Löschung, Zusammenführen, Optimierung) blockieren sich nicht mehr gegenseitig. Jede Suche arbeitet mit einem konsistenten Schnappschuss des Index.

Indizierung und Wartung

  • Das Löschen von Dokumenten schreibt den Index nicht mehr neu: Dokumente werden sofort aus der Suche ausgeschlossen und bei der Optimierung physisch entfernt.
  • Die Indexoptimierung ist 4‑mal schneller und verbraucht 4‑mal weniger Speicher; sehr große Indizes werden in mehrere Segmente begrenzter Größe optimiert.
  • Die Indizierung verbraucht etwa die Hälfte des maximalen RAMs.

Textverarbeitung

  • Die Groß‑/Kleinschreibung wird auf .NET Framework und .NET identisch behandelt, sodass die Suchergebnisse nicht von der Plattform abhängen.
  • Nicht gepaarte Surrogat‑Zeichen werden durch U+FFFD ersetzt, anstatt entfernt zu werden, und Begriffe, die ausschließlich aus gemischten Zeichen bestehen, werden nicht mehr indiziert.

Änderungen der öffentlichen API

Zwei Eigenschaften wurden zur Klasse GroupDocs.Search.IndexSettings hinzugefügt:

  • Boolean ReplaceUnpairedSurrogates – ersetzt nicht gepaarte UTF‑16‑Surrogat‑Zeichen durch das Unicode‑Ersatzzeichen (U+FFFD). Standardmäßig aktiviert.
  • Boolean SkipBlendedOnlyTerms – schließt Begriffe, die ausschließlich aus gemischten Zeichen bestehen, von der Indizierung aus. Standardmäßig aktiviert.

Beide Einstellungen sind fest, sobald ein Index erstellt wird.

Codebeispiel

Das folgende Beispiel aktualisiert einen mit einer früheren Version erstellten Index auf das neue Indexformat, ohne die Dokumente erneut zu indizieren.

string sourceIndexFolder = @"c:\MyOldIndex\"; // Specify path to the index of a previous version
string targetIndexFolder = @"c:\MyNewIndex\"; // Specify path to the folder for the updated index

IndexUpdater updater = new IndexUpdater(); // Creating an index updater

if (updater.CanUpdateVersion(sourceIndexFolder)) // Checking whether the index version can be updated
{
    VersionUpdateResult result = updater.UpdateVersion(sourceIndexFolder, targetIndexFolder); // Updating the index version; the source index is not changed
}

Hinweise zum Upgrade

Berücksichtigen Sie die folgenden Änderungen beim Upgrade von einer früheren Version:

  • Das Indexformat hat sich geändert. Indizes früherer Versionen müssen mit der Klasse IndexUpdater konvertiert werden, bevor sie geöffnet werden können. Quell‑Dokumente sind nicht erforderlich, der konvertierte Index wird in einen anderen Ordner gespeichert, und der Quell‑Index bleibt unverändert.
  • Begriffsdictionaries sind fest, sobald ein Index Dokumente enthält. Alphabet, Tokenisierungs‑Dictionary, Zeichenersetzungen, Stoppwörter sowie die Einstellungen UseStopWords und UseCharacterReplacements müssen vor dem ersten indizierten Dokument konfiguriert werden. Eine spätere Änderung löst InvalidOperationException aus.
  • Inkompatible Indizes werden nicht zusammengeführt. Index.Merge wirft InvalidOperationException, wenn die zusammengeführten Indizes Text unterschiedlich in Begriffe aufteilen.
  • Suche ist standardmäßig multithreaded. Mit dem Standardwert IndexSettings.SearchThreads nutzt die Suche so viele Threads wie Prozessorkerne vorhanden sind. Um die Thread‑Anzahl zu begrenzen, setzen Sie die Eigenschaft explizit.
  • Zwei neue Index‑Einstellungen sind standardmäßig aktiviert. Um das frühere Verhalten beizubehalten, setzen Sie ReplaceUnpairedSurrogates und SkipBlendedOnlyTerms vor der Indexerstellung auf false.
  • Gelöschte Dokumente werden bei der Optimierung physisch entfernt. Rufen Sie Index.Optimize auf, um den Speicherplatz zurückzugewinnen.
  • Die Anzahl der Chunks hat sich geändert. Die Chunk‑Suche liefert nicht mehr für jedes Segment einen Chunk. Durchlaufen Sie die Chunks, solange SearchResult.NextChunkSearchToken nicht null ist, anstatt sich auf die Segmentanzahl zu verlassen.

Wie Sie das Update erhalten

NuGet

  • NuGet – Installieren Sie das neueste Paket:
# Package Manager
NuGet\Install-Package GroupDocs.Search -Version 26.10.0

# .NET CLI
dotnet add package GroupDocs.Search --version 26.10.0
# Package Manager
NuGet\Install-Package GroupDocs.Search.NETFramework -Version 26.10.0

# .NET CLI
dotnet add package GroupDocs.Search.NETFramework --version 26.10.0

Direkter Download

Ressourcen