Resaltar texto java con GroupDocs.Search
En aplicaciones empresariales modernas, highlight text java es esencial para convertir resultados de búsqueda sin procesar en ideas legibles al instante. Ya sea que estés construyendo un portal de revisión legal, un motor de investigación académica o un panel de soporte al cliente, poder localizar y enfatizar visualmente los términos de consulta ahorra a los usuarios innumerables segundos de escaneo manual. Este tutorial muestra cómo usar GroupDocs.Search for Java para search documents java, index documents java, y aplicar tanto resaltado a nivel de documento completo como a nivel de fragmento, todo con solo unas pocas líneas de código.
Respuestas rápidas
- What does “search and highlight text” mean? Significa localizar los términos de consulta dentro de un documento y enfatizarlos visualmente (por ejemplo, con un fondo de color).
- Which library provides this capability? GroupDocs.Search for Java.
- Do I need a license? Una prueba gratuita sirve para evaluación; se requiere una licencia completa para uso en producción.
- Can I customize highlight colors? Sí—cualquier color RGB puede establecerse mediante
HighlightOptions. - Is fragment highlighting supported? Absolutamente; puedes definir términos antes/después de la coincidencia para crear fragmentos concisos.
Cómo resaltar texto java en documentos
Para resaltar texto java en documentos, primero crea un índice de los archivos fuente usando configuraciones de compresión apropiadas, luego ejecuta una consulta de búsqueda para localizar los términos deseados y, finalmente, exporta los resultados a HTML, PDF o texto plano con cada coincidencia envuelta en una etiqueta de resaltado. Este proceso de tres pasos garantiza un resaltado rápido y preciso en colecciones grandes.
- Create an index con configuraciones de compresión que mantengan una huella de almacenamiento baja.
- Execute a search usando la cadena de consulta que deseas resaltar.
- Generate output (HTML, PDF, o texto plano) donde cada aparición del término de consulta está envuelta en una etiqueta de resaltado.
Qué es la búsqueda y el resaltado de texto?
Buscar y resaltar texto es el proceso de escanear una colección indexada para una consulta dada, recuperar los documentos coincidentes y luego marcar cada aparición del término de consulta dentro del resultado (HTML, PDF, etc.). Esta pista visual ayuda a los usuarios finales a detectar información relevante al instante.
Por qué usar GroupDocs.Search for Java?
GroupDocs.Search for Java ofrece high‑performance indexing (hasta 50 GB por índice con Compression.High), rich highlighting que funciona en documentos completos y fragmentos personalizados, y cross‑format support para más de 30 tipos de archivo—incluidos DOCX, PDF, PPTX y TXT. La biblioteca también ofrece incremental indexing, lo que permite agregar nuevos archivos sin reconstruir todo el índice, reduciendo el tiempo de inactividad hasta un 80 % en implementaciones a gran escala.
Requisitos previos
- Java Development Kit (JDK) 8 o posterior.
- Maven para la gestión de dependencias.
- Un IDE como IntelliJ IDEA o Eclipse.
- Familiaridad básica con la sintaxis de Java.
Configuración de GroupDocs.Search for Java
Agrega el repositorio de GroupDocs y la dependencia a tu pom.xml:
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-search</artifactId>
<version>25.4</version>
</dependency>
También puedes descargar el último JAR directamente desde el sitio oficial: GroupDocs.Search for Java releases.
Obtención de licencia
Comienza con una prueba gratuita u obtén una licencia temporal para evaluación. Para implementaciones en producción, compra una licencia completa para desbloquear todas las funciones.
Guía de implementación
La implementación se divide en dos secciones prácticas: highlighting in entire documents y highlighting in fragments. Ambas secciones incluyen los pasos esenciales para how to highlight Java documentos usando GroupDocs.Search.
Configuración de ajustes del índice
Antes de indexar, configura el almacenamiento para usar alta compresión—esto reduce el uso de disco hasta un 70 % mientras preserva la velocidad de búsqueda.
IndexSettings es el objeto de configuración que controla cómo se almacena el índice en disco. Establece Compression a Compression.High para habilitar esta optimización.Compression especifica el nivel de compresión de datos aplicado a los archivos del índice, con Compression.High proporcionando la máxima reducción de tamaño.
Resaltado en documentos completos
Paso 1: crear y poblar el índice
Crea una carpeta de índice y agrega todos los archivos fuente que deseas buscar. La clase Index representa el contenedor buscable.
Paso 2: realizar la búsqueda y aplicar el resaltado
Busca el término (p.ej., ipsum) y genera un archivo HTML con coincidencias resaltadas. Usa HighlightOptions para especificar el color de resaltado y si se deben usar estilos en línea.
HighlightOptions te permite definir los colores de primer plano y de fondo, así como la clase CSS que se aplicará a cada término resaltado.
HtmlHighlighter genera salida HTML con términos resaltados basándose en las opciones proporcionadas.SearchResult contiene la lista de documentos coincidentes y las posiciones de cada término encontrado.
Direct answer: Carga tu índice, llama a search("ipsum"), y pasa el SearchResult resultante junto con una instancia de HighlightOptions configurada al HtmlHighlighter. El resaltador devuelve HTML donde cada aparición de “ipsum” está envuelta en un <span> con el color de fondo seleccionado.
Opciones clave explicadas
- Compression – la alta compresión ahorra almacenamiento.
- HighlightColor – establece cualquier valor RGB para que coincida con la paleta de tu UI.
- UseInlineStyles –
falsegenera HTML limpio que puede ser estilizado globalmente con CSS.
Resaltado en fragmentos
Paso 1: indexar y buscar (igual que arriba)
Se aplican los mismos pasos de indexado y búsqueda; reutilizas los objetos Index y SearchResult.
Paso 2: definir el contexto del fragmento y resaltar
Especifica cuántos términos antes y después de la coincidencia deben aparecer en cada fragmento con FragmentOptions.
FragmentOptions controla el número de palabras circundantes (termsBefore y termsAfter) que se incluyen en cada fragmento, permitiéndote equilibrar el contexto con la longitud del fragmento.
Paso 3: recuperar y escribir fragmentos resaltados
Recoge los fragmentos generados y escríbelos en un archivo HTML. Cada fragmento ya está resaltado según las HighlightOptions que configuraste.
fragmentHighlighter es una utilidad que crea fragmentos resaltados a partir de un SearchResult usando las opciones de fragmento y resaltado especificadas.
Direct answer: Después de obtener el SearchResult, llama a fragmentHighlighter.highlight(searchResult, fragmentOptions, highlightOptions). El método devuelve una lista de fragmentos HTML, cada uno conteniendo el término coincidente rodeado por el número configurado de palabras de contexto y resaltado con el color elegido.
Aplicaciones prácticas
- Legal document review – resalta al instante estatutos, cláusulas o referencias de casos en miles de contratos.
- Academic research – muestra la terminología clave en decenas de PDFs y archivos Word, reduciendo el tiempo de revisión bibliográfica hasta un 60 %.
- Customer support – localiza números de orden o códigos de error en historiales de tickets, permitiendo a los agentes resolver problemas más rápido.
Consideraciones de rendimiento
- Index size – la alta compresión (
Compression.High) reduce la huella de disco hasta un 70 % sin un impacto notable en la latencia. - Fragment context – valores mayores de
termsBefore/Afteraumentan la legibilidad del fragmento pero pueden añadir 10–15 ms por consulta. - Memory management – monitorea el heap de JVM al indexar corpora grandes; considera la indexación incremental para conjuntos de datos que superen los 2 GB para mantener el uso de memoria bajo 1 GB.
Problemas comunes y soluciones
- Indexing errors – verifica las rutas de archivo y asegura que la aplicación tenga permisos de lectura/escritura en la carpeta del índice.
- No highlights appear – confirma que
UseInlineStylescoincida con tu formato de salida (HTML vs. PDF). - Color not applied – asegúrate de que los valores RGB estén dentro del rango 0‑255 y que el visor respete el CSS en línea o la clase CSS suministrada.
Preguntas frecuentes
Q: ¿Cuáles son los beneficios de usar GroupDocs.Search for Java?
A: Ofrece indexación rápida y escalable, resaltado personalizable y soporte para más de 30 formatos de documento, procesando archivos de 500 páginas en menos de 2 segundos en un servidor típico.
Q: ¿Cómo puedo integrar GroupDocs.Search con una API REST?
A: Expón los métodos de búsqueda y resaltado a través de controladores Spring Boot, devolviendo fragmentos HTML o cargas JSON que contengan los fragmentos resaltados.
Q: ¿La biblioteca maneja archivos protegidos con contraseña?
A: Sí—proporciona la contraseña al agregar el documento al índice mediante addDocument(filePath, password).
Q: ¿Puedo personalizar el marcado de resaltado más allá del color?
A: Absolutamente; puedes asignar una clase CSS con options.setCssClass("myHighlight") y estilizarla globalmente, o modificar el HTML generado después del resaltado.
Q: ¿Qué versión se probó para esta guía?
A: El código se validó contra GroupDocs.Search 25.4.
Q: ¿Cómo configuro highlight options java para usar una clase CSS en lugar de estilos en línea?
A: Llama a options.setUseInlineStyles(false) y define una regla CSS para la clase que asignas mediante options.setCssClass("myHighlight").
Q: ¿Existe una forma de resaltar términos directamente en la salida PDF?
A: Sí—GroupDocs.Search funciona con entrada PDF, y el resaltador genera HTML que puede incrustarse en un visor PDF o reconvertirse a PDF usando GroupDocs.Conversion.
Última actualización: 2026-09-27
Probado con: GroupDocs.Search 25.4
Autor: 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
}