Выделение текста 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 или простой текст, обернув каждое совпадение в тег выделения. Этот трёхшаговый процесс обеспечивает быстрое и точное выделение в больших коллекциях.

  1. Create an index с настройками сжатия, позволяющими держать объём хранилища небольшим.
  2. Execute a search используя строку запроса, которую хотите выделить.
  3. 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‑сниппетов, каждый из которых содержит найденный термин, окружённый заданным количеством контекстных слов и выделенный выбранным цветом.

Практические применения

  1. Legal document review – мгновенно выделять законы, пункты или ссылки на дела в тысячах контрактов.
  2. Academic research – находить ключевые термины в десятках PDF‑ и Word‑файлов, сокращая время обзора литературы до 60 %.
  3. 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
}

Связанные руководства