Выделение текста java с помощью GroupDocs.Search
В современных корпоративных приложениях highlight text java является необходимым для преобразования сырых результатов поиска в мгновенно читаемые инсайты. Независимо от того, создаёте ли вы портал для юридического обзора, академический поисковый движок или панель поддержки клиентов, возможность находить и визуально выделять запросные термины экономит пользователям бесчисленное количество секунд ручного сканирования. В этом руководстве показано, как использовать GroupDocs.Search for Java для search documents java, index documents java, а также применять как выделение на уровне всего документа, так и на уровне фрагментов, используя всего несколько строк кода.
Быстрые ответы
- What does “search and highlight text” mean? Это означает поиск запросных терминов внутри документа и их визуальное выделение (например, с помощью цветного фона).
- Which library provides this capability? GroupDocs.Search for Java.
- Do I need a license? Для оценки работает бесплатная пробная версия; для использования в продакшене требуется полная лицензия.
- Can I customize highlight colors? Да — любой цвет RGB можно задать через
HighlightOptions. - Is fragment highlighting supported? Абсолютно; вы можете задать количество терминов до/после совпадения для создания лаконичных фрагментов.
Как выделять текст java в документах
Чтобы выделять текст java в документах, сначала создайте индекс исходных файлов с использованием соответствующих настроек сжатия, затем выполните поисковый запрос для нахождения нужных терминов и, наконец, экспортируйте результаты в HTML, PDF или простой текст, обернув каждое совпадение в тег выделения. Этот трёхшаговый процесс обеспечивает быстрое и точное выделение в больших коллекциях.
- Create an index с настройками сжатия, позволяющими держать объём хранилища небольшим.
- Execute a search используя строку запроса, которую хотите выделить.
- Generate output (HTML, PDF или простой текст), где каждое вхождение поискового термина обёрнуто в тег выделения.
Что такое поиск и выделение текста?
Поиск и выделение текста — это процесс сканирования индексированной коллекции по заданному запросу, получения совпадающих документов и последующей маркировки каждого вхождения поискового термина в выводе (HTML, PDF и т.д.). Этот визуальный сигнал помогает конечным пользователям мгновенно находить релевантную информацию.
Почему использовать GroupDocs.Search for Java?
GroupDocs.Search for Java предоставляет high‑performance indexing (до 50 GB на индекс с Compression.High), rich highlighting, работающий как с целыми документами, так и с пользовательскими фрагментами, и cross‑format support более чем 30 типами файлов — включая DOCX, PDF, PPTX и TXT. Библиотека также предлагает incremental indexing, позволяя добавлять новые файлы без полной перестройки индекса, что сокращает время простоя до 80 % в масштабных развертываниях.
Предварительные требования
- Java Development Kit (JDK) 8 или новее.
- Maven для управления зависимостями.
- IDE, например IntelliJ IDEA или Eclipse.
- Базовое знакомство с синтаксисом Java.
Настройка GroupDocs.Search for Java
Add the GroupDocs repository and dependency to your pom.xml:
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-search</artifactId>
<version>25.4</version>
</dependency>
Вы также можете загрузить последнюю JAR‑файл напрямую с официального сайта: GroupDocs.Search for Java releases.
Приобретение лицензии
Начните с бесплатной пробной версии или получите временную лицензию для оценки. Для продакшн‑развёртываний приобретите полную лицензию, чтобы разблокировать все функции.
Руководство по реализации
Реализация разбита на два практических раздела: highlighting in entire documents и highlighting in fragments. Оба раздела включают основные шаги для how to highlight Java документов с использованием GroupDocs.Search.
Настройка параметров индекса
Перед индексированием настройте хранилище на использование высокого сжатия — это уменьшает использование диска до 70 % при сохранении скорости поиска.
IndexSettings — объект конфигурации, управляющий тем, как индекс хранится на диске. Установите Compression в Compression.High, чтобы включить эту оптимизацию.Compression определяет уровень сжатия данных, применяемый к файлам индекса; Compression.High обеспечивает максимальное уменьшение размера.
Выделение в целых документах
Шаг 1: создать и заполнить индекс
Создайте папку индекса и добавьте все исходные файлы, которые хотите искать. Класс Index представляет контейнер, доступный для поиска.
Шаг 2: выполнить поиск и применить выделение
Ищите термин (например, ipsum) и генерируйте HTML‑файл с выделенными совпадениями. Используйте HighlightOptions для указания цвета выделения и того, использовать ли встроенные стили.
HighlightOptions позволяет задать цвет переднего плана и фона, а также CSS‑класс, который будет применён к каждому выделенному термину.
HtmlHighlighter генерирует HTML‑вывод с выделенными терминами на основе заданных параметров.SearchResult содержит список совпадающих документов и позиции каждого найденного термина.
Direct answer: Загрузите ваш индекс, вызовите search("ipsum") и передайте полученный SearchResult вместе с настроенным экземпляром HighlightOptions в HtmlHighlighter. Высокосветитель возвращает HTML, где каждое вхождение «ipsum» обёрнуто в <span> с выбранным цветом фона.
Ключевые параметры:
- Compression — высокое сжатие экономит место в хранилище.
- HighlightColor — задайте любое значение RGB, соответствующее вашей UI‑палитре.
- UseInlineStyles —
falseгенерирует чистый HTML, который можно стилизовать глобально через CSS.
Выделение в фрагментах
Шаг 1: индексировать и искать (как выше)
Те же шаги индексации и поиска применяются; вы повторно используете объекты Index и SearchResult.
Шаг 2: определить контекст фрагмента и выделить
Укажите, сколько терминов до и после совпадения должно присутствовать в каждом фрагменте с помощью FragmentOptions.
FragmentOptions контролирует количество окружающих слов (termsBefore и termsAfter), включаемых в каждый сниппет, позволяя балансировать контекст и длину фрагмента.
Шаг 3: получить и записать выделенные фрагменты
Соберите сгенерированные фрагменты и запишите их в HTML‑файл. Каждый фрагмент уже выделен согласно настроенным HighlightOptions.
fragmentHighlighter — утилита, создающая выделенные сниппеты из SearchResult с использованием указанных параметров фрагмента и выделения.
Direct answer: После получения SearchResult вызовите fragmentHighlighter.highlight(searchResult, fragmentOptions, highlightOptions). Метод возвращает список HTML‑сниппетов, каждый из которых содержит найденный термин, окружённый заданным количеством контекстных слов и выделенный выбранным цветом.
Практические применения
- Legal document review – мгновенно выделять законы, пункты или ссылки на дела в тысячах контрактов.
- Academic research – находить ключевые термины в десятках PDF‑ и Word‑файлов, сокращая время обзора литературы до 60 %.
- Customer support – быстро находить номера заказов или коды ошибок в истории тикетов, позволяя агентам быстрее решать проблемы.
Соображения по производительности
- Index size – высокое сжатие (
Compression.High) уменьшает объём диска до 70 % без заметного влияния на задержку. - Fragment context – большие значения
termsBefore/Afterповышают читаемость сниппетов, но могут добавить 10–15 ms к каждому запросу. - Memory management – следите за кучей JVM при индексации больших корпусов; рассматривайте инкрементальное индексирование для наборов данных более 2 GB, чтобы удерживать потребление памяти ниже 1 GB.
Распространённые проблемы и решения
- Indexing errors – проверьте пути к файлам и убедитесь, что приложение имеет права чтения/записи в папке индекса.
- No highlights appear – убедитесь, что
UseInlineStylesсоответствует вашему формату вывода (HTML vs. PDF). - Color not applied – проверьте, что значения RGB находятся в диапазоне 0‑255, и что просмотрщик поддерживает встроенный CSS или указанный CSS‑класс.
Часто задаваемые вопросы
Q: What are the benefits of using GroupDocs.Search for Java?
A: Он обеспечивает быстрый, масштабируемый индекс, настраиваемое выделение и поддержку более 30 форматов документов, обрабатывая файлы в 500 страниц менее чем за 2 секунды на типичном сервере.
Q: How can I integrate GroupDocs.Search with a REST API?
A: Откройте методы поиска и выделения через контроллеры Spring Boot, возвращая HTML‑сниппеты или JSON‑полезные нагрузки, содержащие выделенные фрагменты.
Q: Does the library handle password‑protected files?
A: Да — передайте пароль при добавлении документа в индекс через addDocument(filePath, password).
Q: Can I customize the highlight markup beyond color?
A: Абсолютно; вы можете задать CSS‑класс с помощью options.setCssClass("myHighlight") и стилизовать его глобально, либо изменить сгенерированный HTML после выделения.
Q: What version was tested for this guide?
A: Код был проверен на GroupDocs.Search 25.4.
Q: How do I set highlight options java to use a CSS class instead of inline styles?
A: Вызовите options.setUseInlineStyles(false) и определите правило CSS для класса, который задаёте через options.setCssClass("myHighlight").
Q: Is there a way to highlight terms in PDF output directly?
A: Да — GroupDocs.Search работает с PDF‑входом, а высокосветитель выводит HTML, который можно встроить в PDF‑просмотрщик или повторно конвертировать в PDF с помощью GroupDocs.Conversion.
Last updated: 2026-09-27
Tested with: GroupDocs.Search 25.4
Author: GroupDocs
<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>
IndexSettings settings = new IndexSettings();
settings.setTextStorageSettings(new TextStorageSettings(Compression.High));
String indexFolder = "/path/to/your/document/directory/HighlightingInEntireDocument";
Index index = new Index(indexFolder, settings);
index.add("/path/to/your/documents");
SearchResult result = index.search("ipsum");
if (result.getDocumentCount() > 0) {
FoundDocument document = result.getFoundDocument(0);
OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "/path/to/your/output/directory/Highlighted.html");
Highlighter highlighter = new DocumentHighlighter(outputAdapter);
HighlightOptions options = new HighlightOptions();
options.setHighlightColor(new Color(150, 255, 150)); // Custom green shade
options.setUseInlineStyles(false); // Prefer CSS for styling
index.highlight(document, highlighter, options);
}
String indexFolder = "/path/to/your/document/directory/HighlightingInFragments";
Index index = new Index(indexFolder, settings);
index.add("/path/to/your/documents");
SearchResult result = index.search("ipsum");
HighlightOptions options = new HighlightOptions();
options.setTermsBefore(5); // Include 5 terms before the match
options.setTermsAfter(5); // Include 5 terms after the match
options.setHighlightColor(new Color(127, 200, 255)); // Custom blue shade
options.setUseInlineStyles(true); // Use inline styles for emphasis
FoundDocument document = result.getFoundDocument(0);
FragmentHighlighter highlighter = new FragmentHighlighter(OutputFormat.Html);
index.highlight(document, highlighter, options);
StringBuilder stringBuilder = new StringBuilder();
FragmentContainer[] fragmentContainers = highlighter.getResult();
for (FragmentContainer container : fragmentContainers) {
String[] fragments = container.getFragments();
if (fragments.length > 0) {
stringBuilder.append("\n<br>").append(container.getFieldName()).append("<br>\n");
for (String fragment : fragments) {
stringBuilder.append(fragment).append("\n");
}
}
}
try {
Files.write(Paths.get("/path/to/your/output/directory/Fragments.html"), stringBuilder.toString().getBytes());
} catch (IOException ex) {
// Handle exceptions
}