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
UseStopWordsenUseCharacterReplacementsmoeten worden geconfigureerd vóór het eerste document wordt geïndexeerd. Een latere wijziging veroorzaakt eenInvalidOperationException. - Incompatibele indexen worden niet samengevoegd.
Index.Mergeveroorzaakt eenInvalidOperationExceptionals de samengevoegde indexen tekst in verschillende termen splitsen. - Zoeken is standaard multithreaded. Met de standaard
IndexSettings.SearchThreadsgebruikt 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
ReplaceUnpairedSurrogatesenSkipBlendedOnlyTermsin opfalsevóór het aanmaken van een index. - Verwijderde documenten worden fysiek verwijderd tijdens optimalisatie. Roep
Index.Optimizeaan 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.NextChunkSearchTokenniet 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
- Direct Download – Download de gecompileerde assemblies voor .NET van de officiële release‑pagina:
https://releases.groupdocs.com/search/net/new-releases/groupdocs.search-for-.net-26.10-dlls-only/
https://releases.groupdocs.com/search/net/new-releases/groupdocs.search-for-.net-26.10/
Bronnen
- Volledige release‑notities – https://releases.groupdocs.com/search/net/release-notes/2026/groupdocs-search-for-net-26-10-release-notes/
- Documentatie – https://docs.groupdocs.com/search/net/
- Code‑voorbeelden – https://github.com/groupdocs-search/GroupDocs.Search-for-.NET/
- Free Support Forum – https://forum.groupdocs.com/c/search/
- Use it from AI agents – de GroupDocs.Search MCP‑server draait deze engine lokaal voor Claude, Cursor en Copilot: https://docs.groupdocs.com/search/mcp/ · Heb je een vector‑database nodig om vragen te stellen over een map met documenten?