Эффективное управление результатами поиска является краеугольным камнем любой надежной системы поиска документов, и понимание того, как интерпретировать и использовать эти результаты, может значительно улучшить принятие решений на основе данных. В этом руководстве мы рассмотрим, как работать с результатами поиска с помощью C#. От настройки репозитория индекса до настройки параметров нечеткого поиска, это руководство предоставляет четкий и практичный подход к обработке поисковых запросов и их результатов. Независимо от того, нужно ли вам анализировать совпадения для отдельных терминов или сложных фраз, этот метод позволяет вам комплексно обрабатывать результаты и выявлять значимые закономерности. К концу вы будете уверены, как извлекать результаты поиска в C# и использовать их для различных приложений.
Шаги по работе с результатами поиска с использованием C#
- Включите библиотеку GroupDocs.Search for .NET в свой проект для работы с результатами поиска
- Создайте объект индекса с помощью класса Index и укажите путь к папке, в которой будет храниться индекс.
- Используйте метод Index.Add для добавления документов из указанной папки в индекс.
- Создайте экземпляр SearchOptions и включите нечеткий поиск, установив FuzzySearch.Enabled в значение true.
- Определите максимальное количество допустимых различий (например, 3) с помощью FuzzyAlgorithm
- Используйте метод Index.Search для поиска документов, содержащих указанные термины или фразы вместе с настроенными параметрами поиска.
- Вывести количество найденных документов (DocumentCount) и общее количество вхождений поисковых терминов (OccurrenceCount)
- Пройдитесь по документам в результатах поиска с помощью метода GetFoundDocument. Для каждого документа отобразите его путь к файлу и количество вхождений
- Для каждого документа выполните итерацию по FoundFields, чтобы отобразить такие сведения, как имя поля, количество вхождений, найденные термины и найденные фразы.
Для эффективной работы с результатами поиска сначала необходимо настроить индексный репозиторий для ваших документов. Используя предоставленный фрагмент кода, индекс создается в указанной папке, и в него добавляются документы из другой папки. Затем параметры поиска настраиваются для включения нечеткого поиска, что позволяет выполнять гибкое сопоставление с максимальным порогом разницы. Эта настройка упрощает поиск терминов, таких как «Эйнштейн», или фраз, таких как «Теория относительности», с использованием расширенных алгоритмов. После выполнения поиска результаты доступны через объект SearchResult. Отображается общее количество документов, соответствующих запросу, и количество их вхождений. Извлекается подробная информация о каждом документе, включая путь к файлу и вхождения терминов и фраз. Проходя по найденным полям в каждом документе, вы можете определить конкретные поля, содержащие совпадения, и проанализировать термины и фразы с их соответствующей частотой. Этот шаг демонстрирует, как получить доступ к результатам индексного поиска с помощью C#, предоставляя структурированное представление извлеченных данных.
Код для работы с результатами поиска с использованием C#
using GroupDocs.Search; | |
using GroupDocs.Search.Options; | |
using GroupDocs.Search.Results; | |
using System; | |
namespace WorkwithSearchResultsUsingCSharp | |
{ | |
internal class Program | |
{ | |
static void Main(string[] args) | |
{ | |
// Apply the license to remove the restrictions | |
// imposed by the Search library | |
License lic = new License(); | |
lic.SetLicense(@"GroupDocs.Search.lic"); | |
string indexFolder = @"d:\MyIndex\"; | |
string documentsFolder = @"d:\MyDocuments\"; | |
// Creating an index | |
Index index = new Index(indexFolder); | |
// Indexing documents from the specified folder | |
index.Add(documentsFolder); | |
// Creating search options | |
SearchOptions options = new SearchOptions(); | |
options.FuzzySearch.Enabled = true; // Enabling the fuzzy search | |
options.FuzzySearch.FuzzyAlgorithm = new TableDiscreteFunction(3); // Setting the maximum number of differences to 3 | |
// Search for documents containing the word 'Einstein' or the phrase 'Theory of Relativity' | |
SearchResult result = index.Search("Einstein OR \"Theory of Relativity\"", options); | |
// Printing the result | |
Console.WriteLine("Documents: " + result.DocumentCount); | |
Console.WriteLine("Total occurrences: " + result.OccurrenceCount); | |
for (int i = 0; i < result.DocumentCount; i++) | |
{ | |
FoundDocument document = result.GetFoundDocument(i); | |
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); | |
// Printing found terms | |
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]); | |
} | |
} | |
// Printing found phrases | |
if (field.TermSequences != null) | |
{ | |
for (int k = 0; k < field.TermSequences.Length; k++) | |
{ | |
string sequence = string.Join(" ", field.TermSequences[k]); | |
Console.WriteLine("\t\t\t" + sequence.PadRight(30) + field.TermSequencesOccurrences[k]); | |
} | |
} | |
} | |
} | |
} | |
} | |
} |
Эффективное управление и интерпретация результатов поиска имеют решающее значение для максимизации ценности индексированных данных. Этот процесс включает не только извлечение документов, но и глубокое погружение в вхождения терминов, совпадения по полям и последовательности фраз. Продемонстрированный метод позволяет вам анализировать результаты структурированным и подробным образом, что позволяет получить расширенные данные. Более того, независимость библиотеки от платформы обеспечивает бесшовную интеграцию в различные системы и среды, что делает ее универсальным выбором для задач, связанных с поиском. Освоив этот подход, вы сможете эффективно обрабатывать результаты поиска в C# и применять их в широком диапазоне сценариев, от анализа данных до извлечения документов в реальном времени.
Ранее мы поделились подробным руководством по созданию отчетов о поиске с использованием C#. Для полного пошагового руководства обязательно ознакомьтесь с нашей подробной статьей о том, как создать отчет о поиске с помощью C#.