세부 사항으로 넘어가기 전에 전체 텍스트 검색 기술에 대한 개요를 살펴보겠습니다. 전체 텍스트 검색은 기본적으로 문서 모음에서 텍스트/쿼리를 검색하는 고급 방법입니다. 이 접근 방식은 용어의 모든 인스턴스를 빠르게 찾고 텍스트 인덱스를 사용하여 작동합니다. 이 기사에서는 C#을 사용하여 문서에서 전체 텍스트를 프로그래밍 방식으로 검색하는 방법을 배웁니다.
그런 다음 다양한 검색 기술을 구현하여 워드 프로세서 문서, 스프레드시트, 프레젠테이션, HTML 파일, PDF eBook, 이메일 메시지, ZIP 아카이브 및 기타 여러 파일에서 텍스트를 검색할 수 있습니다.
전체 텍스트 검색 구현의 예 중 하나는 워드 프로세서 및 텍스트 편집기에 있습니다. 문서 어디에서나 구 또는 단어를 찾는 데 도움이 됩니다.
다음 주제는 아래에서 다룹니다.
텍스트 검색을 위한 .NET API
GroupDocs.Search for .NET은 전체 텍스트 검색을 허용하고 타사 도구나 소프트웨어 종속성 없이 모든 .NET 응용 프로그램에 통합할 수 있는 백엔드 검색 API입니다. 이를 통해 애플리케이션에서 다양한 문서 형식 검색을 수행할 수 있습니다.
다운로드 섹션에서 DLL 또는 MSI 설치 프로그램을 다운로드하거나 NuGet을 통해 .NET 애플리케이션에 API를 설치할 수 있습니다.
PM> Install-Package GroupDocs.Search
C#을 사용한 전체 텍스트 검색
전체 텍스트 검색을 수행하거나 구현하는 두 가지 주요 단계가 있습니다.
- 인덱싱
- 검색 수행
인덱싱
동일하거나 다른 파일 형식을 가진 수천 개의 문서를 즉시 검색할 수 있도록 하려면 색인을 생성하고 이러한 문서를 색인에 추가해야 합니다.
색인이란 무엇입니까?
색인에는 모든 문서의 스캔된 텍스트가 있습니다. 따라서 검색 작업(특정 쿼리 검색)을 수행할 때 원본 문서의 텍스트가 아닌 인덱스만 참조합니다.
색인 생성
인덱스는 메모리나 디스크에 만들 수 있습니다. 메모리에 생성된 인덱스는 프로그램을 종료한 후 저장할 수 없습니다. 반대로 디스크에 생성된 인덱스는 향후 작업을 계속하기 위해 로드될 수 있습니다. 다음 예는 디스크에 인덱스를 생성하는 방법을 보여줍니다.
Index index = new Index("indexPath/FolderName/");
문서가 색인화되면 색인은 검색 쿼리를 처리할 준비가 됩니다. 다음은 GroupDocs.Search for .NET을 사용하여 수행할 수 있는 몇 가지 검색 기술입니다.
- 대소문자 구분 검색
- 정규식 검색
- 구문 검색
- 패싯 검색
- 동의어 검색
- 와일드카드 검색
C#에서 검색 수행
사용 사례로 시작합니다. 여러 문서(Word, PDF, Excel 및 HTML)가 있고 해당 문서에 대해 특정 검색 쿼리(검색 용어 “비디오”)를 수행하려는 경우.
다음은 폴더 내의 여러 문서에서 텍스트 검색을 수행하는 방법에 대한 단계입니다.
- 원본 문서 폴더와 색인 폴더를 결정합니다.
- 쿼리 문자열을 준비합니다.
- 인덱스 폴더를 이용하여 색인을 생성합니다.
- 색인에 원본 문서 폴더를 추가합니다.
- Search 메서드 Index 클래스를 사용하여 검색을 수행합니다.
- 각 문서의 속성에 대한 탐색 및 검색 결과.
다음 소스 코드는 제공된 폴더의 모든 문서에 대해 C#을 사용하여 텍스트 검색을 수행합니다.
// C#에서 제공된 폴더의 모든 문서에서 쿼리 텍스트 검색
string indexFolder = @"indexPath/GroupDocs/index/";
string documentsFolder = @"documentPath/GroupDocs/source/";
string query = "video";
// 지정된 폴더에 인덱스 생성 및 인덱스에 문서 폴더 추가
Index index = new Index(indexFolder);
index.Add(documentsFolder);
// 색인에서 검색
SearchResult result = index.Search(query);
Console.WriteLine("Documents found: " + result.DocumentCount);
// 검색 결과의 각 문서 순회
foreach (FoundDocument document in result)
{
Console.WriteLine("Document Path : " + document.DocumentInfo.FilePath);
Console.WriteLine("Occurance : " + document.OccurrenceCount);
}
문서 폴더에서 사용 가능한 모든 문서에서 문서 경로와 검색어 발생 수를 가져옵니다. 다음은 시각화할 스크린샷입니다.
C#에서 텍스트 검색 결과 강조 표시
이제 동일한 텍스트 검색을 수행하지만 이번에는 쿼리와 일치하는 모든 항목을 강조 표시합니다.
다음 단계는 텍스트 검색 결과를 강조 표시하는 방법을 보여줍니다.
- 쿼리 문자열을 준비합니다.
- 인덱스 폴더 경로를 이용하여 색인을 생성합니다.
- 색인에 원본 문서 폴더를 추가합니다.
- 검색 방식으로 문서 폴더를 검색합니다.
- 검색결과를 순회하면서 하이라이터를 생성합니다.
- Index 클래스의 Highlight 메서드를 사용하여 검색 결과를 강조 표시합니다.
다음 코드는 C#을 사용하여 검색 결과가 강조 표시된 HTML 출력을 생성합니다.
string indexFolder = @"indexPath/GroupDocs/index/";
string documentFolder = @"documentPath/GroupDocs/source/";
string query = "draw";
// 지정된 폴더에 인덱스 생성 및 인덱스에 문서 폴더 추가
Index index = new Index(indexFolder);
index.Add(documentFolder);
// 검색어로 검색
SearchResult result = index.Search(query);
// 텍스트의 모든 항목 강조 표시
for (int i = 0; i < result.DocumentCount; i++)
{
FoundDocument document = result.GetFoundDocument(i);
string path = indexFolder + "Highlighted-"+ i +".html";
OutputAdapter outputAdapter = new FileOutputAdapter(path);
Highlighter highlighter = new HtmlHighlighter(outputAdapter);
index.Highlight(document, highlighter);
}
출력으로 여러 HTML 파일을 얻습니다. 각 파일은 강조 표시된 검색어/단어와 함께 다른 문서(예: excel.xlsx, source.docx, target.docx)의 내용을 표시합니다. 아래는 DOCX 파일의 강조 표시된 HTML 출력입니다.
무료 API 라이선스 받기
평가 제한 없이 API를 사용하기 위해 임시 무료 라이선스 받기를 할 수 있습니다.
결론
이 기사에서는 C#을 사용하여 폴더의 여러 문서 내에서 텍스트를 검색하는 방법을 배웠습니다. 또한 HTML 형식의 검색 결과 텍스트를 프로그래밍 방식으로 강조 표시하는 방법에 대해 논의했습니다.
문서를 사용하여 API에 대해 자세히 알아볼 수 있습니다. GitHub에서 더 많은 예제를 사용할 수 있습니다. 문의 사항은 포럼을 통해 문의하십시오.