C# .NET을 사용한 퍼지 검색
  • 문서에 어떤 색상이나 색상 철자가 사용되었는지 알 수 없습니다.
  • “John"을 검색하고 있지만 철자가 “Jon” 또는 “Jhon"일 수 있습니다.
  • 사용자가 “USA"를 입력하면 “USA"를 찾습니다.
  • 찾고 있는 단어나 문구에 “실수"가 있을 수 있습니다. 이런, 또 “실수"입니다.

여기에 퍼지 검색이 있습니다. 퍼지 검색을 사용하면 데이터에서 정확한 일치가 아닌 대략적인 일치를 찾을 수 있으므로 검색 쿼리가 유연해집니다. 이는 데이터에 오타, 철자 오류 또는 변형이 있는 시나리오에서 특히 유용합니다. 이 문서에서는 C#을 사용하여 폴더 전체의 여러 문서에서 유사 항목 검색을 프로그래밍 방식으로 수행하는 방법을 보여줍니다.

C# 퍼지 검색 라이브러리

퍼지 검색의 경우 GroupDocs.Search for .NET API를 활용합니다. 이를 통해 철자법에 어느 정도 허용할 수 있으므로 영국식 영어와 미국식 영어 사이의 언어 차이를 효과적으로 수용할 수 있습니다.

이 라이브러리를 사용하면 Word 문서(DOC, DOCX), 스프레드시트(XLS, XLSX), 프레젠테이션(PPT, PPTX), PDF 파일, 마크업(HTML, XML), 마크다운(MD), eBook(EPUB, CHM, FB2), 이메일 메시지(MSG, EML), OneNote 문서 및 ZIP 아카이브.

작업할 수 있는 모든 유형의 파일을 알아보려면 문서를 확인하세요.

다운로드 섹션에서 DLL 또는 MSI 설치 프로그램을 가져오거나 NuGet을 사용하여 .NET 프로그램에 API를 추가하도록 선택할 수 있습니다.

C#을 사용하여 파일에서 퍼지 검색을 해보자

C#을 사용하여 폴더 내 다양한 파일 형식의 여러 파일에서 유사 항목 검색을 수행하려면 다음 단계를 따르세요.

  • 폴더 경로를 제공하여 색인을 생성합니다.
  • 생성된 인덱스에 검색 디렉터리의 상위 폴더 경로를 추가합니다.
  • 검색어를 정의합니다.
  • 옵션을 활성화하여 퍼지 검색을 활성화하십시오.
  • 필요에 따라 퍼지 알고리즘의 유사성 수준을 설정합니다.
  • 검색 결과를 얻으려면 Search 메소드를 사용하여 검색을 실행하십시오.
  • 이제 SearchResults를 반복하여 원하는 대로 출력을 생성하거나 인쇄할 수 있습니다.

아래에 언급된 C# 코드의 퍼지 검색은 철자 오류 허용 범위가 20%인 모든 하위 폴더의 모든 파일에서 지정된 쿼리와 대략적으로 일치하는 항목을 찾습니다.

// 퍼지 C#을 사용하여 여러 폴더에서 여러 파일 검색

// 인덱스 폴더를 생성하고 여기에 문서 폴더 추가
Index index = new Index("indexing-folder-path");
index.Add("path/parent-folder");

SearchOptions options = new SearchOptions();
options.FuzzySearch.Enabled = true; // Enabling the fuzzy search
options.FuzzySearch.FuzzyAlgorithm = new SimilarityLevel(0.8);

string query = "nulla"; // search approximate matches of the provided query  
SearchResult result = index.Search(query, options);

여기서 유사성 수준은 0.8로 설정됩니다. 즉, 80% 일치는 20% 오류 허용에 해당합니다. 코드의 유사성 수준을 조정하여 허용 수준을 조정할 수 있습니다.

다음은 위 코드에서 얻을 수 있는 퍼지 검색 결과입니다. 매우 간단하지만 인쇄 코드는 이 기사의 뒷부분에서도 사용할 수 있습니다.

Query: nulla
 Documents: 2
 Occurrences: 135

     Document: Lorem ipsum.docx
     Occurrences: 132
         Field: content
         Occurrences: 132
             nulla               98
             nullam              34

     Document: EnglishText.txt
     Occurrences: 3
         Field: content
         Occurrences: 3
             dull                1
             full                1
             fully               1

검색 결과 인쇄

다음 C# 코드는 검색 결과를 표시하는 두 가지 방법을 제공합니다.

  • 대략적인 일치 항목을 모두 강조 표시합니다.
  • 읽기 및 분석 가능한 형식으로 결과를 인쇄합니다.
// C#을 사용하여 모든 문서에 대한 검색 결과 강조 표시 및 인쇄
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);

    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, indexFolder + "/Highlight" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter); 
    index.Highlight(document, highlighter);

    Console.WriteLine("\tDocument: " + document.DocumentInfo.FilePath);
    Console.WriteLine("\tOccurrences: " + document.OccurrenceCount);
    for (int j = 0; j < document.FoundFields.Length; j++)
    {
        FoundDocumentField field = document.FoundFields[j];
        Console.WriteLine("\t\tField: " + field.FieldName);
        Console.WriteLine("\t\tOccurrences: " + document.OccurrenceCount);
        // 찾은 용어 인쇄
        if (field.Terms != null)
        {
            for (int k = 0; k < field.Terms.Length; k++)
            {
                Console.WriteLine("\t\t\t" + field.Terms[k].PadRight(20) + field.TermsOccurrences[k]);
            }
        }
    }
    Console.WriteLine("===========================================");
}

무료 라이센스 또는 무료 평가판 받기

무료 라이센스

이 라이브러리를 제약 없이 무료로 탐색하려면 임시 라이센스를 획득하세요.

무료 시험판

다운로드 섹션에서 무료 평가판을 다운로드할 수 있습니다.

파일 및 폴더 내 검색을 위한 .NET API

결론

이 기사에서는 퍼지 검색의 마법에 대한 C# 프로그래밍 방식 접근 방식을 조사하여 어느 정도의 오류 허용 범위 내에서 대략적으로 일치하는 단어를 모두 찾았습니다. 이 기능을 사용하면 영국식 영어와 미국식 영어 사이의 언어 변형, 텍스트의 오타, 이름 변형 및 음성 일치와 같은 지역적 언어 변형을 수용하는 데 퍼지 검색이 효과적으로 수행됩니다.

API에 대한 포괄적인 세부 정보를 보려면 독자는 문서를 참조하는 것이 좋습니다.

모든 질문이나 추가 토론은 포럼으로 문의하실 수 있습니다.


또한보십시오