GroupDocs.Search for .NET 26.10이 이제 제공됩니다. 이는 주요 릴리스이며: 인덱스 형식이 재설계되어 인덱스가 디스크 공간을 적게 차지하고, RAM을 절반만 사용하며 2~4배 빠르게 열립니다. 검색, 삭제, 최적화 및 이미지 검색이 수배에서 수백 배 가속화되고, 검색이 더 이상 인덱싱을 기다리지 않으며, 인덱스 데이터는 체크섬 및 원자적 업데이트로 보호됩니다.
버전 22.7–26.8에서 생성된 기존 인덱스는 재인덱싱 없이 새로운 형식으로 변환됩니다. 이번 릴리스에는 22개의 변경 사항이 포함되어 있습니다: 새로운 기능 4개, 개선 사항 15개, 수정 사항 3개.
성능 하이라이트
대부분의 향상은 인덱스 크기와 세그먼트 수가 커질수록 크게 나타납니다.
| 항목 | 26.10에서의 향상 |
|---|---|
| 로드된 인덱스에 필요한 RAM | 2배 적게 |
| 인덱스 열기 | 2~4배 빠르게 |
| 디스크상의 인덱스 크기 | 인덱싱된 데이터에 비례하여 증가합니다; 인덱스가 클수록 절감 효과가 커집니다 |
| 대형 인덱스에서 단어 검색 | 최대 2배 빠르게; 희귀 단어는 10~40배 빠르게 |
| 대형 인덱스에서 퍼지 검색 | 2.5~5배 빠르게 |
| 대형 인덱스에서 와일드카드 검색 | 2.5~3배 빠르게 |
| 와일드카드, 정규식, 숫자 범위 및 청크 기반 퍼지 검색 | 7~150배 빠르게 |
| 날짜 범위 검색 | 2~27배 빠르게 |
| 문서 삭제 | 수백 배 빠르게, 메모리 4배 적게 사용, 추가 디스크 공간 필요 없음 |
| 인덱스 최적화 | 4배 빠르게, 메모리 4배 적게 사용 |
| 인덱싱 중 피크 RAM | 2배 적게 |
| 문서의 저장된 텍스트 가져오기 | 최대 15배 빠르게 |
| 이미지 검색 데이터 | 메모리 2.9배 적게, 로드 6.6배 빠르게, 저장 100배 빠르게; 역 이미지 검색은 최대 1.8배 빠르게 |
| 인덱스가 수정되는 동안 검색 | 더 이상 차단되지 않음 |
| 인덱스 신뢰성 | 체크섬 및 원자적 변경; 중단된 작업은 완료되거나 롤백됩니다 |
| 검색 스레드 | 기본적으로 모든 프로세서 코어 사용; 언제든지 변경 가능 |
이번 릴리스의 새로운 기능
| 키 | 요약 | 카테고리 |
|---|---|---|
| SEARCHNET-3665 | 검색 스레드 수를 언제든지 변경할 수 있는 기능 구현 | 기능 |
| SEARCHNET-3666 | 짝이 없는 서러게이트 문자 교체 옵션 구현 | 기능 |
| SEARCHNET-3667 | 혼합 문자만으로 구성된 용어를 건너뛰는 옵션 구현 | 기능 |
| SEARCHNET-3668 | 문서를 재인덱싱하지 않고 새로운 인덱스 형식으로 인덱스 버전 업데이트 구현 | 기능 |
| SEARCHNET-3669 | 인덱스의 디스크 공간 사용 최적화 구현 | 개선 |
| SEARCHNET-3670 | 로드된 인덱스의 RAM 사용 최적화 구현 | 개선 |
| SEARCHNET-3671 | 인덱스 로딩 속도 최적화 구현 | 개선 |
| SEARCHNET-3672 | 대형 인덱스에서 검색 속도 최적화 구현 | 개선 |
| SEARCHNET-3673 | 퍼지 검색 최적화 구현 | 개선 |
| SEARCHNET-3674 | 와일드카드 검색 최적화 구현 | 개선 |
| SEARCHNET-3675 | 문서 삭제 및 업데이트 최적화 구현 | 개선 |
| SEARCHNET-3676 | 인덱스 최적화 작업 최적화 구현 | 개선 |
| SEARCHNET-3677 | 인덱스가 수정되는 동안 검색 허용 | 개선 |
| SEARCHNET-3678 | 인덱스 신뢰성 향상 | 개선 |
| SEARCHNET-3679 | 인덱싱 중 메모리 사용 최적화 구현 | 개선 |
| SEARCHNET-3680 | 문서 텍스트 가져오기 최적화 구현 | 개선 |
| SEARCHNET-3681 | 이미지 검색 최적화 구현 | 개선 |
| SEARCHNET-3682 | 모든 플랫폼에서 대소문자 처리를 동일하게 구현 | 개선 |
| SEARCHNET-3688 | 청크 기반 검색 최적화 구현 | 개선 |
| SEARCHNET-3683 | 기본 검색 스레드 수 수정 | 수정 |
| SEARCHNET-3684 | 용어 사전 변경 후 일관성 없는 인덱싱 방지 | 수정 |
| SEARCHNET-3685 | 텍스트 처리 방식이 다른 인덱스 병합 방지 | 수정 |
주요 기능
인덱스 저장 및 신뢰성
- 인덱스 크기가 이제 인덱싱된 데이터에 비례하여 증가하므로, 많은 세그먼트를 가진 대형 인덱스가 가장 많은 공간을 절감합니다.
- 로드된 인덱스는 RAM을 절반만 사용하며, 인덱스를 여는 속도는 2~4배 빠릅니다.
- 인덱스 데이터는 체크섬으로 보호되며, 모든 변경은 원자적으로 적용됩니다. 오류, 전원 장애 또는 프로세스 종료로 작업이 중단되면 인덱스는 이전 일관된 상태를 유지합니다.
검색
- 쿼리 용어를 포함하는 세그먼트만 읽어들여 단어, 퍼지, 와일드카드 및 청크 검색을 가속화합니다.
- 검색은 기본적으로 모든 프로세서 코어를 사용하며,
IndexSettings.SearchThreads를 통해 언제든지 스레드 수를 변경할 수 있습니다. - 검색과 인덱스 수정 작업(인덱싱, 업데이트, 삭제, 병합, 최적화)은 이제 서로 차단하지 않습니다. 각 검색은 인덱스의 일관된 스냅샷을 사용합니다.
인덱싱 및 유지 관리
- 문서 삭제 시 인덱스를 다시 쓰지 않습니다: 문서는 즉시 검색에서 제외되고 최적화 중에 물리적으로 제거됩니다.
- 인덱스 최적화는 4배 빠르고 메모리 사용량은 4배 적으며, 매우 큰 인덱스는 제한된 크기의 여러 세그먼트로 최적화됩니다.
- 인덱싱 시 피크 RAM 사용량이 약 절반 수준입니다.
텍스트 처리
- 대소문자 처리가 .NET Framework와 .NET에서 동일하게 수행되어 검색 결과가 플랫폼에 의존하지 않습니다.
- 짝이 없는 서러게이트 문자는 제거되는 대신 U+FFFD로 교체되며, 혼합 문자만으로 구성된 용어는 더 이상 인덱싱되지 않습니다.
공개 API 변경 사항
GroupDocs.Search.IndexSettings 클래스에 두 개의 속성이 추가되었습니다:
Boolean ReplaceUnpairedSurrogates– 짝이 없는 UTF-16 서러게이트 문자를 유니코드 대체 문자(U+FFFD)로 교체합니다. 기본적으로 활성화됩니다.Boolean SkipBlendedOnlyTerms– 혼합 문자만으로 구성된 용어를 인덱싱에서 제외합니다. 기본적으로 활성화됩니다.
두 설정은 인덱스 생성 시 고정됩니다.
코드 예제
다음 예제는 이전 버전에서 만든 인덱스를 재인덱싱 없이 새로운 인덱스 형식으로 업데이트합니다.
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
}
업그레이드 시 주의사항
이전 버전에서 업그레이드할 때 다음 변경 사항을 고려하십시오:
- 인덱스 형식이 변경되었습니다. 이전 버전의 인덱스는 열기 전에
IndexUpdater클래스를 사용해 변환해야 합니다. 원본 문서는 필요 없으며, 변환된 인덱스는 다른 폴더에 저장되고 원본 인덱스는 수정되지 않습니다. - 용어 사전은 인덱스에 문서가 포함된 후 고정됩니다. 알파벳, 토큰화 사전, 문자 교체, 불용어, 그리고
UseStopWords와UseCharacterReplacements설정은 첫 번째 문서를 인덱싱하기 전에 구성해야 합니다. 이후 변경 시InvalidOperationException이 발생합니다. - 호환되지 않는 인덱스는 병합되지 않습니다. 병합된 인덱스가 텍스트를 다르게 분할하면
Index.Merge가InvalidOperationException을 발생시킵니다. - 검색은 기본적으로 다중 스레드입니다. 기본
IndexSettings.SearchThreads설정으로 검색은 프로세서 코어 수만큼의 스레드를 사용합니다. 스레드 수를 제한하려면 해당 속성을 명시적으로 설정하십시오. - 두 개의 새로운 인덱스 설정이 기본적으로 활성화됩니다. 이전 동작을 유지하려면 인덱스를 만들기 전에
ReplaceUnpairedSurrogates와SkipBlendedOnlyTerms를false로 설정하십시오. - 삭제된 문서는 최적화 중에 물리적으로 제거됩니다. 공간을 회수하려면
Index.Optimize를 호출하십시오. - 청크 수가 변경되었습니다. 청크 기반 검색은 이제 각 세그먼트마다 청크를 반환하지 않습니다. 세그먼트 수에 의존하지 말고
SearchResult.NextChunkSearchToken이 null이 아닐 때까지 청크를 반복하십시오.
업데이트 받는 방법
NuGet
- NuGet – 최신 패키지를 설치합니다:
# 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
직접 다운로드
- Direct Download – 공식 릴리스 페이지에서 .NET용 컴파일된 어셈블리를 다운로드합니다:
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/
리소스
- 전체 릴리스 노트 – https://releases.groupdocs.com/search/net/release-notes/2026/groupdocs-search-for-net-26-10-release-notes/
- 문서 – https://docs.groupdocs.com/search/net/
- 코드 예제 – https://github.com/groupdocs-search/GroupDocs.Search-for-.NET/
- Free Support Forum – https://forum.groupdocs.com/c/search/
- AI 에이전트에서 사용 – GroupDocs.Search MCP 서버가 이 엔진을 Claude, Cursor, Copilot용으로 로컬에서 실행합니다: https://docs.groupdocs.com/search/mcp/ · 폴더의 문서에 대해 질문하려면 벡터 데이터베이스가 필요하신가요?