GroupDocs.Search voor .NET 26.10 is nu beschikbaar. Dit is een major release: het indexformaat is opnieuw ontworpen, zodat indexen minder schijfruimte innemen, de helft van het RAM nodig hebben en 2 tot 4 keer sneller openen. Zoeken, verwijderen, optimaliseren en afbeelding zoeken zijn versneld meerdere tot honderden keren, zoekopdrachten wachten niet langer op indexering, en indexgegevens worden beschermd met controlesommen en atomische updates.

Bestaande indexen die zijn aangemaakt met versies 22.7–26.8 worden naar het nieuwe formaat zonder opnieuw te indexeren geconverteerd. De release bevat 22 wijzigingen: 4 nieuwe functies, 15 verbeteringen en 3 bugfixes.

Prestaties overzicht

De meeste winsten groeien met de grootte van de index en het aantal segmenten.

Wat Winst in 26.10
RAM vereist door een geladen index 2 keer minder
Een index openen 2 tot 4 keer sneller
Indexgrootte op schijf Groeit evenredig met de geïndexeerde gegevens; hoe groter de index, hoe groter de besparing
Zoeken naar een woord in grote indexen Tot 2 keer sneller; zeldzame woorden 10 tot 40 keer sneller
Fuzzy-zoekopdracht in grote indexen 2,5 tot 5 keer sneller
Wildcard-zoekopdracht in grote indexen 2,5 tot 3 keer sneller
Wildcard-, reguliere expressie-, numeriek bereik- en fuzzy-zoekopdracht per fragment 7 tot 150 keer sneller
Zoekopdracht op datumbereik 2 tot 27 keer sneller
Documenten verwijderen Honderden keren sneller, 4 keer minder geheugen, geen extra schijfruimte
Indexoptimalisatie 4 keer sneller, 4 keer minder geheugen
Piek RAM tijdens indexering 2 keer minder
Ophalen van de opgeslagen tekst van een document Tot 15 keer sneller
Afbeeldingszoekgegevens 2,9 keer minder geheugen, geladen 6,6 keer sneller, opgeslagen 100 keer sneller; omgekeerd afbeelding zoeken tot 1,8 keer sneller
Zoeken terwijl de index wordt aangepast Niet langer geblokkeerd
Betrouwbaarheid van de index Controlesommen en atomische wijzigingen; onderbroken bewerkingen worden voltooid of teruggedraaid
Zoekthreads Alle processorkernen standaard; kan op elk moment worden gewijzigd

Wat is nieuw in deze release

Sleutel Samenvatting Categorie
SEARCHNET-3665 Implementeer de mogelijkheid om het aantal zoekthreads op elk moment te wijzigen Functie
SEARCHNET-3666 Implementeer een optie om ongepaarde surrogate‑tekens te vervangen Functie
SEARCHNET-3667 Implementeer een optie om termen die alleen uit samengevoegde tekens bestaan over te slaan Functie
SEARCHNET-3668 Implementeer een indexversie‑update naar het nieuwe indexformaat zonder de documenten opnieuw te indexeren Functie
SEARCHNET-3669 Implementeer optimalisatie van het schijfruimteverbruik van een index Verbetering
SEARCHNET-3670 Implementeer optimalisatie van het RAM‑verbruik van een geladen index Verbetering
SEARCHNET-3671 Implementeer optimalisatie van de laadsnelheid van een index Verbetering
SEARCHNET-3672 Implementeer optimalisatie van de zoek‑snelheid in grote indexen Verbetering
SEARCHNET-3673 Implementeer optimalisatie van fuzzy‑zoekopdrachten Verbetering
SEARCHNET-3674 Implementeer optimalisatie van wildcard‑zoekopdrachten Verbetering
SEARCHNET-3675 Implementeer optimalisatie van het verwijderen en bijwerken van documenten Verbetering
SEARCHNET-3676 Implementeer optimalisatie van de indexoptimalisatie‑bewerking Verbetering
SEARCHNET-3677 Sta zoeken toe terwijl de index wordt aangepast Verbetering
SEARCHNET-3678 Verbeter de betrouwbaarheid van de index Verbetering
SEARCHNET-3679 Implementeer optimalisatie van het geheugengebruik tijdens indexering Verbetering
SEARCHNET-3680 Implementeer optimalisatie van het ophalen van documenttekst Verbetering
SEARCHNET-3681 Implementeer optimalisatie van afbeelding zoeken Verbetering
SEARCHNET-3682 Implementeer identieke behandeling van hoofdlettergebruik op alle platformen Verbetering
SEARCHNET-3688 Implementeer optimalisatie van zoeken per fragment Verbetering
SEARCHNET-3683 Los het standaard aantal zoekthreads op Bugfix
SEARCHNET-3684 Voorkom inconsistente indexering na het wijzigen van term‑woordenboeken Bugfix
SEARCHNET-3685 Voorkom het samenvoegen van indexen die tekst anders verwerken Bugfix

Belangrijke functies

Indexopslag en betrouwbaarheid

  • De indexgrootte groeit nu evenredig met de geïndexeerde gegevens, waardoor grote indexen met veel segmenten de meeste ruimte besparen.
  • Een geladen index heeft de helft van het RAM nodig, en het openen van een index is 2 tot 4 keer sneller.
  • Indexgegevens worden beschermd met controlesommen, en alle wijzigingen worden atomisch toegepast. Als een bewerking wordt onderbroken door een fout, een stroomstoring of het beëindigen van het proces, blijft de index in de vorige consistente staat.

Zoeken

  • Alleen de segmenten die de zoektermen bevatten worden gelezen, wat woord-, fuzzy-, wildcard- en fragmentzoekopdrachten versnelt.
  • Zoeken gebruikt standaard alle processorkernen, en het aantal threads kan op elk moment worden gewijzigd via IndexSettings.SearchThreads.
  • Zoekopdrachten en index‑wijzigende bewerkingen (indexering, bijwerken, verwijderen, samenvoegen, optimalisatie) blokkeren elkaar niet langer. Elke zoekopdracht werkt met een consistente snapshot van de index.

Indexering en onderhoud

  • Documenten verwijderen herschrijft de index niet meer: documenten worden onmiddellijk uitgesloten van zoeken en fysiek verwijderd tijdens optimalisatie.
  • Indexoptimalisatie is 4 keer sneller en gebruikt 4 keer minder geheugen; zeer grote indexen worden geoptimaliseerd in meerdere segmenten van beperkte grootte.
  • Indexering verbruikt ongeveer de helft van het piek‑RAM.

Tekstverwerking

  • Hoofdlettergebruik wordt identiek behandeld op .NET Framework en .NET, zodat zoekresultaten niet afhankelijk zijn van het platform.
  • Ongepaarde surrogate‑tekens worden vervangen door U+FFFD in plaats van verwijderd, en termen die alleen uit samengevoegde tekens bestaan worden niet meer geïndexeerd.

Wijzigingen in de openbare API

Er zijn twee eigenschappen toegevoegd aan de GroupDocs.Search.IndexSettings‑klasse:

  • Boolean ReplaceUnpairedSurrogates – vervangt ongepaarde UTF-16 surrogate‑tekens door het Unicode‑vervangingskarakter (U+FFFD). Standaard ingeschakeld.
  • Boolean SkipBlendedOnlyTerms – sluit van indexering de termen uit die alleen uit samengevoegde tekens bestaan. Standaard ingeschakeld.

Beide instellingen worden vastgezet wanneer een index wordt aangemaakt.

Code‑voorbeeld

Het volgende voorbeeld werkt een index die met een eerdere versie is aangemaakt bij naar het nieuwe indexformaat zonder de documenten opnieuw te indexeren.

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
}

Upgrade‑notities

Houd rekening met de volgende wijzigingen bij het upgraden vanaf een eerdere versie:

  • Het indexformaat is gewijzigd. Indexen van eerdere versies moeten met de IndexUpdater‑klasse worden geconverteerd voordat ze kunnen worden geopend. Bron‑documenten zijn niet vereist, de geconverteerde index wordt opgeslagen in een andere map, en de bron‑index wordt niet aangepast.
  • Term‑woordenboeken zijn vast zodra een index documenten bevat. Het alfabet, tokenisatie‑woordenboek, tekenvervangingen, stopwoorden, en de instellingen UseStopWords en UseCharacterReplacements moeten worden geconfigureerd vóór het eerste document wordt geïndexeerd. Een latere wijziging veroorzaakt een InvalidOperationException.
  • Incompatibele indexen worden niet samengevoegd. Index.Merge veroorzaakt een InvalidOperationException als de samengevoegde indexen tekst in verschillende termen splitsen.
  • Zoeken is standaard multithreaded. Met de standaard IndexSettings.SearchThreads gebruikt zoeken zoveel threads als er processorkernen zijn. Om het aantal threads te beperken, stel de eigenschap expliciet in.
  • Twee nieuwe indexinstellingen zijn standaard ingeschakeld. Om het vorige gedrag te behouden, stel ReplaceUnpairedSurrogates en SkipBlendedOnlyTerms in op false vóór het aanmaken van een index.
  • Verwijderde documenten worden fysiek verwijderd tijdens optimalisatie. Roep Index.Optimize aan om de ruimte terug te winnen.
  • Het aantal fragmenten is gewijzigd. Zoeken per fragment geeft niet langer een fragment voor elk segment terug. Itereer over de fragmenten zolang SearchResult.NextChunkSearchToken niet null is in plaats van te vertrouwen op het aantal segmenten.

Hoe de update te verkrijgen

NuGet

  • NuGet – Installeer het nieuwste pakket:
# 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

Directe download

Bronnen