다른 기사에서 우리는 동의어가 무엇이며 어떤 단어의 모든 동의어를 얻는 방법을 보았습니다. 다른 문서에서 이러한 동의어를 찾는 것은 어떻습니까? 이 문서에서는 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
C#을 사용하여 동의어 검색 결과 인쇄
다음 단계에서는 각 문서에서 모든 동의어와 해당 발생 횟수를 가져온 후 결과를 자세히 인쇄합니다.
- 위의 코드를 사용하여 검색된 검색 결과를 트래버스합니다.
- 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 리포지토리에서 예제를 볼 수 있습니다. 포럼을 통해 문의 사항이 있는 경우 저희에게 연락하십시오.