세부 사항으로 넘어가기 전에 전체 텍스트 검색 기술에 대한 개요를 살펴보겠습니다. 전체 텍스트 검색은 기본적으로 문서 모음에서 텍스트/쿼리를 검색하는 고급 방법입니다. 이 접근 방식은 용어의 모든 인스턴스를 빠르게 찾고 텍스트 인덱스를 사용하여 작동합니다. 이 기사에서는 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에서 더 많은 예제를 사용할 수 있습니다. 문의 사항은 포럼을 통해 문의하십시오.

또한보십시오