Полнотекстовый поиск — это способ поиска текста/запроса в наборе документов. Этот подход быстро находит все экземпляры термина/фразы и работает с использованием текстовых индексов. В этой статье мы узнаем, как программно выполнять полнотекстовый поиск в документах с помощью Java.
После этого вы можете реализовать различные методы поиска и создать свое поисковое решение для текстовых документов, электронных таблиц, презентаций, HTML-файлов, PDF-файлов, электронных книг, сообщений электронной почты, ZIP-архивов и многих других форматов документов.
Ниже рассматриваются следующие темы:
- Java API для полнотекстового поиска
- Полнотекстовый поиск
- Выполнить поиск в Java
- Выделить результаты поиска
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
Существует два шага для выполнения поиска в файлах, хранящихся в папке.
- Индексация
- Выполнить поиск
Индексные файлы с использованием Java
Индекс содержит отсканированные тексты всех документов. Поэтому, когда вы собираетесь выполнять операцию поиска, ссылаются только на индекс, а не на текст исходных документов. Чтобы сделать возможным мгновенный поиск среди тысяч документов с одинаковыми или разными форматами файлов, вам необходимо создать индекс и добавить в него эти документы. Когда документы проиндексированы, индекс готов к обработке поисковых запросов.
Следующие две простые строки создают индекс, а также добавляют папку документов в индекс.
Index index = new Index("indexingFolderPath");
index.add("documentsFolderPath");
Выполнить поиск в Java
После индексирования нескольких документов одного и того же или разных форматов, таких как (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, полученного с использованием приведенного выше кода.
Получите бесплатную лицензию API
Вы можете получить бесплатную временную лицензию, чтобы использовать API без ограничений пробной версии.
Вывод
В этой статье мы научились искать текст в нескольких документах папки в Java. Далее мы обсудили, как программно выделять текст результатов поиска в формате HTML для файлов MS Word, файлов TXT и PDF с помощью GroupDocs.Search for Java.
Вы можете узнать больше об API, используя документацию. Многие другие примеры доступны на GitHub. По вопросам обращайтесь к нам через форум.