Перш ніж перейти до деталей, давайте ознайомимося з технікою повнотекстового пошуку. Повнотекстовий пошук — це, по суті, більш просунутий спосіб пошуку тексту/запиту в наборі документів. Цей підхід швидко знаходить усі екземпляри терміна та працює за допомогою текстових індексів. У цій статті ми дізнаємося, як програмно шукати повний текст у документах за допомогою C#.

Після цього ви можете застосувати різні методи пошуку для пошуку тексту в документах текстових редакторів, електронних таблицях, презентаціях, файлах HTML, електронних книгах PDF, повідомленнях електронної пошти, архівах ZIP та багатьох інших файлах.

Одним із прикладів реалізації повнотекстового пошуку є текстові процесори та текстові редактори. Це допоможе вам знайти фразу чи слово будь-де в документі.

Повнотекстовий пошук

Нижче описано наступні теми:

.NET API для текстового пошуку

GroupDocs.Search for .NET — це API внутрішнього пошуку, який забезпечує повнотекстовий пошук і може бути інтегрований у будь-яку програму .NET без будь-яких сторонніх інструментів чи програмного забезпечення. Це дозволяє пошук у багатьох форматах документів у ваших програмах.

Ви можете завантажити DLL або інсталятор MSI із розділу завантажень або встановити API у своїй програмі .NET за допомогою NuGet.

PM> Install-Package GroupDocs.Search

Повнотекстовий пошук за допомогою C#

Існує два основні кроки для виконання або реалізації повнотекстового пошуку.

  • Індексація
  • Виконайте пошук

Індексація

Щоб зробити можливим миттєвий пошук у тисячах документів з однаковими або різними форматами файлів, вам потрібно створити індекс і додати ці документи до нього.

Що таке індекс?

Покажчик містить сканований текст усіх документів. Тому, коли ви збираєтеся виконати пошукову операцію (пошук за певним запитом), посилається лише на індекс, а не на текст вихідних документів.

Створення індексу

Індекс можна створити в пам’яті або на диску. Індекс, створений у пам’яті, неможливо зберегти після виходу з програми. Навпаки, індекс, створений на диску, може бути завантажений у майбутньому для продовження роботи. У наступному прикладі показано, як створити індекс на диску.

Index index = new Index("indexPath/FolderName/");

Коли документи проіндексовано, індекс готовий до обробки пошукових запитів. Нижче наведено деякі методи пошуку, які можна виконати за допомогою GroupDocs.Search for .NET:

  • Пошук з урахуванням регістру
  • Пошук за регулярним виразом
  • Пошук по фразі
  • Фасетний пошук
  • Пошук синонімів
  • Пошук по шаблону

Виконайте пошук у C#

Починаючи з варіанта використання. Якщо у нас є кілька документів (Word, PDF, Excel і HTML), і ми хочемо виконати над ними певний пошуковий запит (пошуковий термін «відео»).

Нижче наведено кроки для виконання текстового пошуку в кількох документах у папці:

  • Виберіть папку вихідних документів і папку покажчика.
  • Підготуйте рядок запиту.
  • Створіть Індекс за допомогою папки індексу.
  • Додайте папку вихідних документів до індексу.
  • Виконайте пошук за допомогою класу методу Пошук Індекс.
  • Результати огляду та пошуку для властивостей кожного документа.

Наступний вихідний код виконує текстовий пошук за допомогою C# у всіх документах наданої папки.

// Текст запиту пошуку в усіх документах наданої папки на C#
string indexFolder =  @"indexPath/GroupDocs/index/";
string documentsFolder = @"documentPath/GroupDocs/source/";
string query = "video";

// Створення індексу у вказаній папці та додавання папки документів до Індексу
Index index = new Index(indexFolder);
index.Add(documentsFolder);

// Пошук в індексі
SearchResult result = index.Search(query);
Console.WriteLine("Documents found: " + result.DocumentCount);

// Перегляньте кожен документ результату пошуку
foreach (FoundDocument document in result)
{
    Console.WriteLine("Document Path : " + document.DocumentInfo.FilePath);
    Console.WriteLine("Occurance : " + document.OccurrenceCount);
}

Ми отримаємо шлях до документа та кількість пошукових термінів у всіх документах, доступних у папці документів. Ось скріншот для візуалізації.

Виведення тексту повного пошуку

Виділення результатів пошуку тексту в C#

Давайте тепер виконаємо той самий текстовий пошук, але цього разу ми виділимо всі випадки, які відповідають запиту.

У наступних кроках показано, як виділити результати текстового пошуку:

  • Підготуйте рядок запиту.
  • Створіть Індекс, використовуючи шлях до папки індексу.
  • Додайте папку вихідних документів до індексу.
  • Виконайте пошук у папці документів за допомогою методу Пошук.
  • Під час перегляду результатів пошуку створіть Highlighter.
  • Використовуйте метод Highlight класу Index, щоб виділити результати пошуку.

Наведений нижче код генерує вивід HTML із виділеними результатами пошуку за допомогою C#.

string indexFolder =    @"indexPath/GroupDocs/index/";
string documentFolder = @"documentPath/GroupDocs/source/";
string query = "draw";

// Створіть індекс у вказаній папці та додайте папку документів до Індексу
Index index = new Index(indexFolder);
index.Add(documentFolder);

// Пошук за словом запиту
SearchResult result = index.Search(query);

// Виділіть усі випадки в тексті
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);
                    
    string path = indexFolder + "Highlighted-"+ i +".html";
    OutputAdapter outputAdapter = new FileOutputAdapter(path); 
    Highlighter highlighter = new HtmlHighlighter(outputAdapter); 
    index.Highlight(document, highlighter);
}

На виході ми отримаємо кілька файлів HTML. У кожному файлі відображатиметься вміст іншого документа (наприклад, excel.xlsx, source.docx, target.docx) із виділеним пошуковим терміном/словом. Нижче наведено виділений HTML-вихідний файл DOCX.

Виділіть повнотекстові результати пошуку у вмісті

Отримайте безкоштовну ліцензію API

Ви можете отримати безкоштовну тимчасову ліцензію, щоб використовувати API без оціночних обмежень.

Висновок

У цій статті ми навчилися шукати текст у кількох документах папки за допомогою C#. Далі ми обговорили, як програмно виділити текст результатів пошуку у форматі HTML.

Ви можете дізнатися більше про API за допомогою документації. Багато інших прикладів доступно на GitHub. Якщо у вас виникли запитання, зв’яжіться з нами через форум.

Дивись також