Выделение результатов поиска Java с помощью GroupDocs.Search
Если вы устали вручную просматривать бесконечные документы, highlight search results java предлагает быстрый и надёжный способ быстро находить именно то, что вам нужно. В этом руководстве мы пройдём настройку распределённой поисковой сети, индексацию ваших файлов, выполнение запросов и, наконец, выделение совпадений непосредственно в документах. К концу вы получите готовое к продакшн решениe, которое может масштабироваться на несколько узлов и мгновенно выделять релевантные термины.
Быстрые ответы
- Что означает “highlight search results java”? Это относится к программному помечанию найденных ключевых слов внутри документов при использовании Java‑библиотек, таких как GroupDocs.Search.
- Можно ли выделять несколько терминов в одном документе? Да — используйте
HighlightOptions, чтобы задать количество терминов до/после каждого совпадения. - Нужна ли лицензия для запуска этого примера? Бесплатная пробная версия или временная лицензия подходят для тестирования; полная лицензия требуется для продакшн.
- Какая версия Java требуется? Java 8 или новее.
- Подходит ли этот подход для больших коллекций документов? Абсолютно — поисковая сеть распределяет индексацию и нагрузку запросов по узлам.
Что такое Highlight Search Results Java?
highlight search results java — это процесс получения поискового запроса, нахождения совпадающих фрагментов в ваших документах и визуального выделения этих фрагментов (например, обрамлением маркерами или возвратом их в виде выделенных фрагментов). Это упрощает пользователям просмотр контекста каждого совпадения без необходимости открывать весь файл.
Почему использовать GroupDocs.Search для выделения?
GroupDocs.Search предоставляет готовый, высокопроизводительный движок, поддерживающий десятки форматов файлов, распределённую индексацию и встроенные средства выделения фрагментов. Это избавляет от необходимости писать собственные парсеры или управлять низкоуровневой поисковой инфраструктурой, позволяя сосредоточиться на предоставлении удобного пользовательского опыта.
Предварительные требования
- Java Development Kit (JDK) 8+ — убедитесь, что
java -versionвыводит 1.8 или выше. - Maven — для управления зависимостями.
- GroupDocs.Search for Java 25.4 — версия, используемая в этом руководстве.
- IDE, например IntelliJ IDEA или Eclipse (необязательно, но рекомендуется).
- Базовые знания Java и сетевых концепций.
Настройка GroupDocs.Search для Java
Вы можете добавить библиотеку в ваш проект либо через Maven, либо загрузив JAR напрямую.
Настройка Maven
Добавьте репозиторий и зависимость в ваш файл pom.xml:
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/search/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-search</artifactId>
<version>25.4</version>
</dependency>
</dependencies>
Прямое скачивание
Либо скачайте последнюю JAR с GroupDocs.Search for Java releases.
Шаги получения лицензии
- Free Trial: Начните с пробной версии, чтобы изучить основные функции.
- Temporary License: Получите расширенную тестовую лицензию со страницы.
- Purchase: Приобретите полную лицензию для продакшн‑развёртываний.
Базовая инициализация и настройка
Создайте экземпляр Index, указывающий на папку, в которой будет храниться индекс поиска:
import com.groupdocs.search.*;
public class SearchSetup {
public static void main(String[] args) {
// Create an instance of Index
Index index = new Index("path/to/index/directory");
System.out.println("GroupDocs.Search initialized successfully.");
}
}
Руководство по реализации
Как выделять результаты поиска Java в распределённой сети
Настройка поисковой сети
Сначала определите местоположение ваших документов и порт, который будет использоваться сетью.
import com.groupdocs.search.common.*;
import com.groupdocs.search.scaling.configuring.*;
String basePath = "YOUR_DOCUMENT_DIRECTORY/AdvancedUsage/Scaling/HighlightingResultsInNetwork/";
int basePort = 49116; // Change if port is busy
Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);
basePath— корневая папка, содержащая файлы, которые вы хотите индексировать.basePort— TCP‑порт для связи узлов; выберите свободный.
Развёртывание узлов поисковой сети
Разверните один или несколько узлов в зависимости от конфигурации. Первый узел станет главным.
import com.groupdocs.search.scaling.*;
SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);
SearchNetworkNode masterNode = nodes[0];
nodes— массив всех запущенных узлов.masterNode— координирует индексацию и распределение запросов.
Подписка на события узлов поисковой сети
Прикрепите к главному узлу слушатели для получения уведомлений в реальном времени (например, о завершении индексирования).
import com.groupdocs.search.scaling.events.*;
SearchNetworkNodeEvents.subscribe(masterNode);
Индексация каталогов в узле сети
Укажите узлу папку (или папки), которые вы хотите проиндексировать. Вспомогательный класс Utils.DocumentsPath разрешается в папку с примерами данных.
import com.groupdocs.search.examples.Utils;
import com.groupdocs.search.options.*;
IndexingDocuments.addDirectories(masterNode, Utils.DocumentsPath);
Поиск текста по узлам сети
Выполните запрос ко всем узлам и получите соответствующие документы.
import java.util.ArrayList;
import com.groupdocs.search.scaling.results.*;
ArrayList<NetworkFoundDocument> documents = TextSearchInNetwork.searchAll(masterNode, "ipsum", false);
highlightInDocument(masterNode, documents.get(0), 3); // Highlight results from the first found document.
- Замените
"ipsum"на любой термин, который нужно найти. - Метод
highlightInDocument(показан ниже) применит выделение.
Выделение нескольких терминов в документе — выделение результатов поиска
Следующий метод демонстрирует, как выделять фрагменты вокруг каждого совпадения. Он также показывает, как управлять количеством окружающих терминов, удовлетворяя вторичное ключевое слово highlight multiple terms document.
import com.groupdocs.search.highlighters.*;
import com.groupdocs.search.options.*;
public static void highlightInDocument(
SearchNetworkNode node,
NetworkFoundDocument document,
int maxFragments) {
Searcher searcher = node.getSearcher();
FragmentHighlighter highlighter = new FragmentHighlighter(OutputFormat.PlainText);
HighlightOptions options = new HighlightOptions();
options.setTermsAfter(5);
options.setTermsBefore(5);
options.setTermsTotal(15);
searcher.highlight(document, highlighter, options); // Perform highlighting on the document.
FragmentContainer[] result = highlighter.getResult();
for (FragmentContainer container : result) {
if (container.getCount() == 0) continue;
String[] fragments = container.getFragments();
int count = Math.min(fragments.length, maxFragments);
for (int j = 0; j < count; j++) {
// Print each fragment within the specified limit.
}
}
}
OutputFormat.PlainText— возвращает фрагменты в виде простого текста; можно переключить на HTML для более богатого UI.HighlightOptions— управляет количеством слов до/после каждого совпадения (setTermsBefore,setTermsAfter).maxFragments— ограничивает количество фрагментов, отображаемых для каждого документа.
Закрытие узлов сети
После завершения выключите все узлы, чтобы освободить ресурсы.
for (SearchNetworkNode node : nodes) {
node.close();
}
Практические применения
- Enterprise Document Management: Централизуйте корпоративные файлы и позволяйте сотрудникам мгновенно находить релевантные контракты или политики.
- Legal Case Files: Быстро находите прецедентные документы, выделяя ключевые юридические термины.
- R&D Knowledge Bases: Исследователи могут искать патенты или технические статьи и видеть выделенные отрывки.
- E‑commerce Catalogs: Позвольте покупателям находить товары по ключевому слову с выделенными совпадениями в описаниях.
- Library Systems: Пользователи могут искать по тысячам книг и просматривать выделенные отрывки без открытия каждого файла.
Соображения по производительности
- Keep indexes fresh: Переиндексируйте изменённые файлы каждую ночь или используйте инкрементные обновления.
- Leverage multiple nodes: Распределяйте индексацию и нагрузку запросов, чтобы избежать узких мест.
- Tune
HighlightOptions: СнижениеtermsBefore/Afterуменьшает использование памяти для очень больших документов.
Распространённые проблемы и их устранение
| Симптом | Вероятная причина | Решение |
|---|---|---|
| Нет результатов | Индекс не построен или указывает на неправильную папку | Проверьте Utils.DocumentsPath и снова выполните IndexingDocuments.addDirectories. |
| Вывод выделения пуст | Ограничения HighlightOptions слишком низкие или проблема с кодировкой документа | Увеличьте termsTotal или убедитесь, что кодировка документа поддерживается. |
| Ошибка конфликта порта | basePort уже используется | Выберите другой номер порта (например, 49117). |
| Исключение лицензии | Отсутствует или просрочен файл лицензии | Поместите действительный файл GroupDocs.Search.lic в корень приложения. |
Часто задаваемые вопросы
Q: Можно ли развернуть несколько узлов поисковой сети для балансировки нагрузки?
A: Да, развертывание нескольких узлов распределяет работу по индексации и запросам, улучшая масштабируемость и время отклика.
Q: Как выделить несколько поисковых терминов в одном документе?
A: Передайте список терминов в метод highlight и настройте HighlightOptions, чтобы показывать окружающие слова для каждого совпадения.
Q: Можно ли подписаться на события поиска в реальном времени?
A: Конечно. Используйте SearchNetworkNodeEvents.subscribe(masterNode), чтобы получать обратные вызовы о прогрессе индексации, выполнении запросов и ошибках.
Q: Какие форматы файлов поддерживает GroupDocs.Search для индексации и выделения?
A: Более 50 форматов, включая DOCX, PDF, HTML, TXT, PPTX и другие.
Q: Как улучшить скорость поиска в очень больших коллекциях?
A: Регулярно обновляйте индексы, распределяйте их по узлам и точно настраивайте HighlightOptions, чтобы ограничить размер фрагментов.
Заключение
Следуя этому руководству, вы теперь имеете полную, готовую к продакшн настройку для highlight search results java с использованием GroupDocs.Search. Вы можете масштабировать решение по сети, индексировать любой поддерживаемый тип документа, выполнять быстрые запросы и возвращать выделенные фрагменты, помогающие пользователям находить именно то, что им нужно. Исследуйте дальнейшие шаги — интеграцию результатов в веб‑интерфейс, добавление фасетного поиска или сочетание с OCR для сканированных PDF.
Последнее обновление: 2026-01-08
Тестировано с: GroupDocs.Search for Java 25.4
Автор: GroupDocs