Полнотекстовый поиск — это способ поиска текста/запроса в наборе документов. Этот подход быстро находит все экземпляры термина/фразы и работает с использованием текстовых индексов. В этой статье мы узнаем, как программно выполнять полнотекстовый поиск в документах с помощью Java.

Полнотекстовый поиск

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

Ниже рассматриваются следующие темы:

Java API для полнотекстового поиска

GroupDocs.Search предоставляет Java API полнотекстового поиска, который можно интегрировать в любое приложение без каких-либо зависимостей от сторонних инструментов и программного обеспечения. Это позволяет вам искать по большому списку форматов документов. Вот некоторые из методов поиска, которые можно выполнять с помощью API:

  • Поиск с учетом регистра
  • Поиск по регулярным выражениям
  • Многогранный поиск
  • Нечеткий поиск
  • Поиск омофонов
  • Поиск синонимов

Загрузите или настройте

Вы можете загрузить файл JAR из раздела загрузок или просто получить последний репозиторий и конфигурации зависимостей для pom.xml ваших на основе maven приложений Java.

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-search</artifactId>
        <version>21.3</version> 
</dependency>

Существует два шага для выполнения поиска в файлах, хранящихся в папке.

  • Индексация
  • Выполнить поиск

Индексные файлы с использованием Java

Индекс содержит отсканированные тексты всех документов. Поэтому, когда вы собираетесь выполнять операцию поиска, ссылаются только на индекс, а не на текст исходных документов. Чтобы сделать возможным мгновенный поиск среди тысяч документов с одинаковыми или разными форматами файлов, вам необходимо создать индекс и добавить в него эти документы. Когда документы проиндексированы, индекс готов к обработке поисковых запросов.

Следующие две простые строки создают индекс, а также добавляют папку документов в индекс.

Index index = new Index("indexingFolderPath");
index.add("documentsFolderPath");

После индексирования нескольких документов одного и того же или разных форматов, таких как (Word, PDF, Excel и HTML), мы можем перейти к обработке определенного поискового запроса (поисковый термин «Рисование») по ним. Ниже приведены шаги для выполнения текстового поиска по нескольким документам в папке с помощью Java:

  • Укажите исходную папку документов и индексную папку.
  • Создайте Index, используя индексную папку.
  • Добавить исходную папку в индекс.
  • Подготовьте строку запроса.
  • Выполните поиск, используя метод search класса Index.
  • Пройдите каждый результат поиска по свойствам каждого документа.

Следующий исходный код выполняет текстовый поиск на Java по всем документам в указанной папке.

// Поиск указанного текста в нескольких документах PDF, Word, Excel, HTML в папке с использованием Java
Index index = new Index("path/indexingFolder");
index.add("path/documentsFolderPath");

// Поиск в индексе указанного текста
SearchResult result = index.search("Draw");

for (int i = 0; i < result.getDocumentCount(); i++) {
    FoundDocument document = result.getFoundDocument(i);
    System.out.println("Document Path: " + document.getDocumentInfo().getFilePath());
    System.out.println("Occurrence : " + document.getOccurrenceCount());
}

Мы получим путь к документу и количество вхождений условий поиска во всех документах с указанной папкой. Вот скриншот для наглядности.

Вывод текста полного поиска

Выделите результаты текстового поиска в Java

Давайте теперь выполним тот же полнотекстовый поиск, а также выделим все вхождения, соответствующие вашему запросу.

Следующие шаги показывают, как выделить результаты текстового поиска:

  • Создайте Индекси добавьте папку документов в индекс.
  • Подготовьте строку запроса.
  • Найдите папку с документами, используя метод search.
  • Просматривая результаты, создайте подсветку с помощью HtmlHighlighter.
  • Используйте метод выделения, чтобы выделить результаты поиска.

Следующий код генерирует выходные данные HTML с выделенными результатами поиска с помощью Java.

// Выделите результаты полнотекстового поиска нескольких документов в папке в Java
Index index = new Index("path/indexingFolder");
index.add("path/documentsFolderPath"); // Synchronous indexing documents from the specified folder

String query = "draw"; // Specify a search query
SearchResult result = index.search(query); // Searching in the index

for (int i = 0; i < result.getDocumentCount(); i++) 
{
    FoundDocument document = result.getFoundDocument(i);

    String path = "path/Highlighted-"+ i +".html";
    OutputAdapter outputAdapter = new FileOutputAdapter(path); 
    HtmlHighlighter highlighter = new HtmlHighlighter(outputAdapter); // Creating the highlighter
    index.highlight(document, highlighter); // Generates HTML formatted output document with highlighted search results
}

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

Выделите результаты полнотекстового поиска в контенте с помощью Java

Получите бесплатную лицензию API

Вы можете получить бесплатную временную лицензию, чтобы использовать API без ограничений пробной версии.

Вывод

В этой статье мы научились искать текст в нескольких документах папки в Java. Далее мы обсудили, как программно выделять текст результатов поиска в формате HTML для файлов MS Word, файлов TXT и PDF с помощью GroupDocs.Search for Java.

Вы можете узнать больше об API, используя документацию. Многие другие примеры доступны на GitHub. По вопросам обращайтесь к нам через форум.

Смотрите также