다른 기사에서 우리는 동의어가 무엇이며 어떤 단어의 모든 동의어를 얻는 방법을 보았습니다. 다른 문서에서 이러한 동의어를 찾는 것은 어떻습니까? 이 문서에서는 C#을 사용하여 여러 파일에서 특정 쿼리(단어)의 동의어를 검색하는 방법을 안내합니다.

아래에서 다음 주제를 다룹니다.

여러 파일에서 동의어 검색을 위한 .NET API

GroupDocs.Search는 지정된 폴더의 여러 파일에서 단어와 동의어를 검색할 수 있는 .NET API를 제공합니다. 이 기사의 표시된 예제에서 이 API를 사용할 것입니다. 많은 문서 형식 목록을 검색할 수 있습니다. 동의어 찾기와 함께 GroupDocs.Search for .NET은 다음을 포함하는 몇 가지 추가 검색 기술도 지원합니다.

  • 퍼지 검색
  • 대소문자 구분 검색
  • 동음이의어 검색
  • 정규식 검색
  • 와일드카드 검색

다운로드 섹션에서 DLL 또는 MSI 설치 프로그램을 다운로드하거나 NuGet을 통해 .NET 애플리케이션에 API를 설치할 수 있습니다.

PM> Install-Package GroupDocs.Search

C#을 사용하여 여러 파일에서 동의어 찾기

단계에서는 C#을 사용하여 폴더 내의 파일에서 동의어(유사한 의미를 가진 단어)를 검색하는 방법을 보여줍니다.

  • 검색어, 색인 폴더, 문서 폴더를 정의합니다.
  • Index 클래스를 사용하여 정의된 인덱스 폴더로 인덱스를 생성합니다.
  • 문서의 폴더를 색인에 추가합니다.
  • SearchOptions를 만들고 UseSynonymSearch를 true로 설정합니다.
  • Index 클래스의 Search 메소드를 호출하여 쿼리와 검색 옵션을 전달한다.
  • 요약을 출력하려면 검색된 SearchResult의 속성을 사용하십시오.

소스 코드는 C#을 사용하여 폴더의 모든 파일에서 모든 동의어를 찾는 방법을 보여줍니다.

// C#을 사용하여 여러 파일 및 폴더에서 동의어 검색
string query = "make";
string indexFolder = @"path\indexFolder";
string documentsFolder = @"path\documentsFolder";

// 지정된 폴더에 인덱스 생성
Index index = new Index(indexFolder);
index.Add(documentsFolder);

// 검색 옵션 개체 만들기
SearchOptions options = new SearchOptions();
options.UseSynonymSearch = true; // Enabling Synonym Search

// '만들다'를 검색해보세요.
// 'make'라는 단어 외에도 동의어 "do, cause, get, ..."도 검색됩니다.
SearchResult result = index.Search(query, options);
Console.WriteLine("Query: " + query);
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Occurrences: " + result.OccurrenceCount);
Query: **make**
Documents: 2
Occurrences: 22

다음 단계에서는 각 문서에서 모든 동의어와 해당 발생 횟수를 가져온 후 결과를 자세히 인쇄합니다.

  • 위의 코드를 사용하여 검색된 검색 결과를 트래버스합니다.
  • GetFoundDocument 메서드를 사용하여 각 FoundDocument를 가져옵니다.
  • 각 FoundDocument의 해당 속성을 인쇄합니다.
  • 각 FoundDocument 내에서 FoundFields를 탐색하여 Found Document Field를 얻습니다.
  • 각 FoundDocumentField에서 각 문서 내에서 해당 용어와 해당 발생 횟수를 얻을 수 있습니다.

다음 소스 코드는 C#을 사용하여 각 검색어의 발생 횟수와 함께 동의어 검색 결과를 출력합니다.

// C#에서 동의어 검색 결과 인쇄
Console.WriteLine("Query: " + query);
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount + "\n");
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);
    Console.WriteLine("Document: " + document.DocumentInfo.FilePath);
    Console.WriteLine("Occurrences: " + document.OccurrenceCount);
    for (int j = 0; j < document.FoundFields.Length; j++)
    {
        FoundDocumentField field = document.FoundFields[j];
        Console.WriteLine("\tField: " + field.FieldName);
        Console.WriteLine("\tOccurrences: " + document.OccurrenceCount);
        // 찾은 용어 인쇄
        if (field.Terms != null)
        {
            for (int k = 0; k < field.Terms.Length; k++)
            {
                Console.WriteLine("\t\t" + field.Terms[k].PadRight(20) + field.TermsOccurrences[k]);
            }
        }
    }
}
Query: **make**
Documents: 2
Total occurrences: 22

Document: C:/documents/sample.docx
Occurrences: 6
    Field: content
    Occurrences: 6
        make             1
        get                 2
        cause            1
        do                  2
Document: C:/documents/sample.txt
Occurrences: 16
    Field: content
    Occurrences: 16
        get                  4
        cause             1
        do                  11

C#을 사용하여 동의어 검색 및 결과 인쇄 - 전체 코드

다음은 제공된 쿼리에 따라 모든 동의어를 먼저 찾은 다음 C#을 사용하여 해당 폴더 내의 각 문서에서 모든 동의어의 모든 항목을 인쇄하는 완전한 소스 코드입니다.

// 여러 파일 및 폴더에서 동의어 검색 및 C#을 사용하여 결과 인쇄
string query = "make";
string indexFolder = @"path\indexFolder";
string documentsFolder = @"path\documentsFolder";

// 지정된 폴더에 인덱스 생성
Index index = new Index(indexFolder);
// 지정된 폴더에서 문서 인덱싱
index.Add(documentsFolder);

// 검색 옵션 개체 만들기
SearchOptions options = new SearchOptions();
options.UseSynonymSearch = true; // Enabling synonym search

// '만들다'를 검색해보세요.
// 'make'라는 단어 외에도 "do, cause, get, ..."이라는 단어도 검색됩니다.
SearchResult result = index.Search(query, options);

// 결과 인쇄
Console.WriteLine("Query: " + query);
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount + "\n");
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);
    Console.WriteLine("Document: " + document.DocumentInfo.FilePath);
    Console.WriteLine("Occurrences: " + document.OccurrenceCount);
    for (int j = 0; j < document.FoundFields.Length; j++)
    {
        FoundDocumentField field = document.FoundFields[j];
        Console.WriteLine("\tField: " + field.FieldName);
        Console.WriteLine("\tOccurrences: " + document.OccurrenceCount);
        // 찾은 용어 인쇄
        if (field.Terms != null)
        {
            for (int k = 0; k < field.Terms.Length; k++)
            {
                Console.WriteLine("\t\t" + field.Terms[k].PadRight(20) + field.TermsOccurrences[k]);
            }
        }
    }
}

결론

결론적으로 C#을 사용하여 지정된 폴더 내의 여러 문서에서 특정 단어와 동의어를 찾는 방법을 배웠습니다. 여러 파일 내에서 단어와 동의어를 검색하기 위해 고유한 .NET 응용 프로그램을 개발할 수 있습니다.

문서에서 .NET Search Automation API에 대해 자세히 알아보세요. 기능을 경험하려면 GitHub 리포지토리에서 예제를 볼 수 있습니다. 포럼을 통해 문의 사항이 있는 경우 저희에게 연락하십시오.

또한보십시오