GroupDocs.Search dla .NET 26.10 jest już dostępny. To główne wydanie: format indeksu został przeprojektowany, więc indeksy zajmują mniej miejsca na dysku, potrzebują połowy pamięci RAM i otwierają się 2‑4 razy szybciej. Wyszukiwanie, usuwanie, optymalizacja i wyszukiwanie obrazów są przyspieszone kilkakrotnie do setek razy, wyszukiwania nie czekają już na indeksowanie, a dane indeksu są chronione sumami kontrolnymi i atomowymi aktualizacjami.
Istniejące indeksy utworzone w wersjach 22.7–26.8 są konwertowane do nowego formatu bez ponownego indeksowania. Wydanie zawiera 22 zmiany: 4 nowe funkcje, 15 ulepszeń i 3 poprawki.
Najważniejsze osiągnięcia wydajności
Większość zysków rośnie wraz z rozmiarem indeksu i liczbą jego segmentów.
| Co | Zysk w 26.10 |
|---|---|
| Pamięć RAM wymagana przez załadowany indeks | 2‑razy mniej |
| Otwieranie indeksu | 2‑4 razy szybciej |
| Rozmiar indeksu na dysku | Rośnie proporcjonalnie do danych indeksowanych; im większy indeks, tym większe oszczędności |
| Wyszukiwanie słowa w dużych indeksach | Do 2‑krotnie szybciej; rzadkie słowa 10‑40 razy szybciej |
| Wyszukiwanie przybliżone w dużych indeksach | 2,5‑5 razy szybciej |
| Wyszukiwanie z użyciem znaków wieloznacznych w dużych indeksach | 2,5‑3 razy szybciej |
| Wyszukiwanie znaków wieloznacznych, wyrażeń regularnych, zakresów liczbowych i przybliżone po fragmentach | 7‑150 razy szybciej |
| Wyszukiwanie zakresu dat | 2‑27 razy szybciej |
| Usuwanie dokumentów | Setki razy szybciej, 4‑razy mniej pamięci, bez dodatkowego miejsca na dysku |
| Optymalizacja indeksu | 4‑razy szybciej, 4‑razy mniej pamięci |
| Szczytowe zużycie RAM podczas indeksowania | 2‑razy mniej |
| Pobieranie przechowywanego tekstu dokumentu | Do 15‑krotnie szybciej |
| Dane wyszukiwania obrazów | 2,9‑razy mniej pamięci, ładowane 6,6‑razy szybciej, zapisywane 100‑razy szybciej; odwrócone wyszukiwanie obrazów do 1,8‑razy szybciej |
| Wyszukiwanie podczas modyfikacji indeksu | Już nie blokuje |
| Niezawodność indeksu | Sumy kontrolne i zmiany atomowe; przerwane operacje są dokańczane lub wycofywane |
| Wątki wyszukiwania | Wszystkie rdzenie procesora domyślnie; można zmienić w dowolnym momencie |
Co nowego w tym wydaniu
| Klucz | Podsumowanie | Kategoria |
|---|---|---|
| SEARCHNET-3665 | Implementacja możliwości zmiany liczby wątków wyszukiwania w dowolnym momencie | Feature |
| SEARCHNET-3666 | Implementacja opcji zastępowania nieparzystych znaków zastępczych | Feature |
| SEARCHNET-3667 | Implementacja opcji pomijania terminów składających się wyłącznie z znaków mieszanych | Feature |
| SEARCHNET-3668 | Implementacja aktualizacji wersji indeksu do nowego formatu bez ponownego indeksowania dokumentów | Feature |
| SEARCHNET-3669 | Implementacja optymalizacji zużycia miejsca na dysku przez indeks | Improvement |
| SEARCHNET-3670 | Implementacja optymalizacji zużycia RAM przez załadowany indeks | Improvement |
| SEARCHNET-3671 | Implementacja optymalizacji szybkości ładowania indeksu | Improvement |
| SEARCHNET-3672 | Implementacja optymalizacji szybkości wyszukiwania w dużych indeksach | Improvement |
| SEARCHNET-3673 | Implementacja optymalizacji wyszukiwania przybliżonego | Improvement |
| SEARCHNET-3674 | Implementacja optymalizacji wyszukiwania znaków wieloznacznych | Improvement |
| SEARCHNET-3675 | Implementacja optymalizacji usuwania i aktualizacji dokumentów | Improvement |
| SEARCHNET-3676 | Implementacja optymalizacji operacji optymalizacji indeksu | Improvement |
| SEARCHNET-3677 | Zezwolenie na wyszukiwanie podczas modyfikacji indeksu | Improvement |
| SEARCHNET-3678 | Poprawa niezawodności indeksu | Improvement |
| SEARCHNET-3679 | Implementacja optymalizacji zużycia pamięci podczas indeksowania | Improvement |
| SEARCHNET-3680 | Implementacja optymalizacji pobierania tekstu dokumentu | Improvement |
| SEARCHNET-3681 | Implementacja optymalizacji wyszukiwania obrazów | Improvement |
| SEARCHNET-3682 | Implementacja jednolitego traktowania wielkości liter na wszystkich platformach | Improvement |
| SEARCHNET-3688 | Implementacja optymalizacji wyszukiwania po fragmentach | Improvement |
| SEARCHNET-3683 | Naprawa domyślnej liczby wątków wyszukiwania | Fix |
| SEARCHNET-3684 | Zapobieganie niespójnemu indeksowaniu po zmianie słowników terminów | Fix |
| SEARCHNET-3685 | Zapobieganie łączeniu indeksów, które przetwarzają tekst inaczej | Fix |
Główne funkcje
Przechowywanie i niezawodność indeksu
- Rozmiar indeksu rośnie proporcjonalnie do danych indeksowanych, więc duże indeksy z wieloma segmentami oszczędzają najwięcej miejsca.
- Załadowany indeks potrzebuje połowy pamięci RAM, a otwieranie indeksu jest 2‑4 razy szybsze.
- Dane indeksu są chronione sumami kontrolnymi, a wszystkie zmiany są stosowane atomowo. Jeśli operacja zostanie przerwana błędem, awarią zasilania lub zakończeniem procesu, indeks pozostaje w poprzednim spójnym stanie.
Wyszukiwanie
- Czytane są tylko segmenty zawierające terminy zapytania, co przyspiesza wyszukiwanie słów, przybliżone, z użyciem znaków wieloznacznych i po fragmentach.
- Wyszukiwanie wykorzystuje wszystkie rdzenie procesora domyślnie, a liczbę wątków można zmienić w dowolnym momencie poprzez
IndexSettings.SearchThreads. - Wyszukiwania i operacje modyfikujące indeks (indeksowanie, aktualizacja, usuwanie, łączenie, optymalizacja) nie blokują się nawzajem. Każde wyszukiwanie pracuje na spójnym migawce indeksu.
Indeksowanie i utrzymanie
- Usuwanie dokumentów nie powoduje ponownego zapisu indeksu: dokumenty są natychmiast wykluczane z wyników wyszukiwania i fizycznie usuwane podczas optymalizacji.
- Optymalizacja indeksu jest 4‑razy szybsza i zużywa 4‑razy mniej pamięci; bardzo duże indeksy są optymalizowane do kilku segmentów o ograniczonym rozmiarze.
- Indeksowanie zużywa około połowy szczytowego RAM.
Przetwarzanie tekstu
- Wielkość liter jest obsługiwana identycznie w .NET Framework i .NET, więc wyniki wyszukiwania nie zależą od platformy.
- Nieparzyste znaki zastępcze są zamieniane na U+FFFD zamiast usuwania, a terminy składające się wyłącznie z znaków mieszanych nie są już indeksowane.
Zmiany w publicznym API
Do klasy GroupDocs.Search.IndexSettings dodano dwa właściwości:
Boolean ReplaceUnpairedSurrogates– zastępuje nieparzyste znaki zastępcze UTF‑16 znakiem zamiennym Unicode (U+FFFD). Włączone domyślnie.Boolean SkipBlendedOnlyTerms– wyklucza z indeksowania terminy składające się wyłącznie z znaków mieszanych. Włączone domyślnie.
Oba ustawienia są ustalane w momencie tworzenia indeksu.
Przykład kodu
Poniższy przykład aktualizuje indeks utworzony w poprzedniej wersji do nowego formatu indeksu bez ponownego indeksowania dokumentów.
string sourceIndexFolder = @"c:\MyOldIndex\"; // Określ ścieżkę do indeksu z poprzedniej wersji
string targetIndexFolder = @"c:\MyNewIndex\"; // Określ ścieżkę do folderu dla zaktualizowanego indeksu
IndexUpdater updater = new IndexUpdater(); // Tworzenie aktualizatora indeksu
if (updater.CanUpdateVersion(sourceIndexFolder)) // Sprawdzanie, czy wersję indeksu można zaktualizować
{
VersionUpdateResult result = updater.UpdateVersion(sourceIndexFolder, targetIndexFolder); // Aktualizacja wersji indeksu; indeks źródłowy nie jest zmieniany
}
Uwagi przy aktualizacji
Weź pod uwagę następujące zmiany przy przechodzeniu z poprzedniej wersji:
- Format indeksu uległ zmianie. Indeksy z poprzednich wersji muszą być skonwertowane przy użyciu klasy
IndexUpdater, zanim będzie można je otworzyć. Dokumenty źródłowe nie są wymagane, skonwertowany indeks jest zapisywany w innym folderze, a indeks źródłowy nie jest modyfikowany. - Słowniki terminów są ustalane po dodaniu pierwszych dokumentów. Alfabet, słownik tokenizacji, zamiany znaków, słowa stop oraz ustawienia
UseStopWordsiUseCharacterReplacementsmuszą być skonfigurowane przed indeksowaniem pierwszego dokumentu. późniejsza zmiana powodujeInvalidOperationException. - Niekompatybilne indeksy nie są łączone.
Index.MergezgłaszaInvalidOperationException, jeśli łączone indeksy dzielą tekst na terminy w inny sposób. - Wyszukiwanie jest domyślnie wielowątkowe. Przy domyślnym
IndexSettings.SearchThreadswyszukiwanie używa tylu wątków, ile jest rdzeni procesora. Aby ograniczyć liczbę wątków, ustaw właściwość explicite. - Dwa nowe ustawienia indeksu są domyślnie włączone. Aby zachować poprzednie zachowanie, ustaw
ReplaceUnpairedSurrogatesiSkipBlendedOnlyTermsnafalseprzed utworzeniem indeksu. - Usunięte dokumenty są fizycznie usuwane podczas optymalizacji. Wywołaj
Index.Optimize, aby odzyskać miejsce. - Liczba fragmentów uległa zmianie. Wyszukiwanie po fragmentach nie zwraca już fragmentu dla każdego segmentu. Iteruj po fragmentach, dopóki
SearchResult.NextChunkSearchTokennie jest nullem, zamiast polegać na liczbie segmentów.
Jak uzyskać aktualizację
NuGet
- NuGet – Zainstaluj najnowszy pakiet:
# 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
Bezpośrednie pobranie
- Direct Download – Pobierz skompilowane zestawy dla .NET z oficjalnej strony wydania:
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/
Zasoby
- Full Release Notes – https://releases.groupdocs.com/search/net/release-notes/2026/groupdocs-search-for-net-26-10-release-notes/
- Documentation – https://docs.groupdocs.com/search/net/
- Code Examples – https://github.com/groupdocs-search/GroupDocs.Search-for-.NET/
- Free Support Forum – https://forum.groupdocs.com/c/search/
- Use it from AI agents – serwer GroupDocs.Search MCP uruchamia ten silnik lokalnie dla Claude, Cursor i Copilot: https://docs.groupdocs.com/search/mcp/ · Do you need a vector database to ask questions about a folder of documents?