В іншій статті ми побачили, що таке синоніми та як отримати всі синоніми будь-якого слова. Як щодо пошуку цих синонімів у різних документах? У цій статті ви дізнаєтесь, як шукати синоніми будь-якого конкретного запиту (слова) у кількох файлах за допомогою C#.
Нижче будуть розглянуті такі теми:
- .NET API – пошук синонімів
- Знайдіть синоніми в документах за допомогою C#
- Подання результатів пошуку синонімів за допомогою C#
- Повний код - Пошук і друк результатів пошуку синонімів
.NET API для пошуку синонімів у кількох файлах
GroupDocs.Search надає .NET API, який дозволяє шукати будь-яке слово та його синоніми в кількох файлах зазначеної папки. Я буду використовувати цей API у показаних прикладах цієї статті. Це дозволяє пошук у великому списку форматів документів. Окрім пошуку синонімів, GroupDocs.Search for .NET також підтримує деякі інші методи пошуку, зокрема:
- Нечіткий пошук
- Пошук з урахуванням регістру
- Омофонний пошук
- Пошук за регулярними виразами
- Пошук по дикій картці
Ви можете завантажити DLL або інсталятор MSI із розділу завантажень або встановити API у своїй програмі .NET за допомогою NuGet.
PM> Install-Package GroupDocs.Search
Знайдіть синоніми в кількох файлах за допомогою C#
Ці кроки показують, як шукати синоніми (слова зі схожими значеннями) у файлах у папці за допомогою C#.
- Визначте пошуковий запит, індексну папку та папку документа.
- Створіть індекс із визначеною папкою індексу за допомогою класу Index.
- Додайте папку документа до покажчика.
- Створіть SearchOptions і встановіть для UseSynonymSearch значення true.
- Викличте метод Search класу Index і передайте параметри запиту та пошуку.
- Щоб надрукувати резюме, скористайтеся властивостями отриманого 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"
// Окрім слова «зробити», також шукатимуть синоніми «зробити, спричинити, отримати, ...».
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#
Наступні кроки друкують результати в деталях після отримання всіх синонімів і їх кількості входжень у кожному документі.
- Перегляньте результати пошуку, отримані за допомогою наведеного вище коду.
- Отримайте кожен FoundDocument за допомогою методу GetFoundDocument.
- Надрукуйте відповідні властивості кожного FoundDocument.
- Перейдіть до FoundFields у кожному FoundDocument, щоб отримати 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"
// Окрім слова «зробити», також шукатимуть слова «зробити, спричинити, отримати, ...».
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. Зв’яжіться з нами за будь-яким запитом через форум.