Recientemente hemos discutido, cómo obtener todos los sinónimos de cualquier palabra. Sería maravilloso si pudiéramos ubicar estos sinónimos dentro de muchos documentos diferentes. En este artículo, veremos cómo buscar cualquier palabra y sus sinónimos en múltiples archivos usando Java.
Los siguientes son los temas tratados a continuación:
- API Java – Búsqueda de sinónimos
- Buscar sinónimos en documentos en Java
- Presenta resultados de búsqueda de sinónimos
- Código Java completo: búsqueda e impresión de resultados de búsqueda de sinónimos
API de Java - Buscar sinónimos en varios archivos
GroupDocs.Search muestra la API de Java GroupDocs.Search for Java. Permite buscar palabras y sus sinónimos en varios archivos múltiples de la carpeta especificada. Admite una larga lista de diferentes formatos de archivo y Varias técnicas de búsqueda Algunas de estas características se mencionan a continuación y puede usarlas en combinación para lograr su objetivo:
- Búsqueda booleana
- Búsqueda sensible a mayúsculas y minúsculas
- Resaltar resultados de búsqueda
- Búsqueda homófona
- Búsqueda de frases
- Búsqueda de expresiones regulares
- Búsqueda por fragmentos
- Búsqueda de sinónimos
Descargar o configurar
Puede descargar el archivo JAR de la sección de descargas, o simplemente obtener las configuraciones de dependencia y repositorio más recientes para el pom.xml de sus aplicaciones Java basadas en maven.
<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.8</version>
</dependency>
Encuentra sinónimos en múltiples archivos usando Java
Pasemos rápidamente a buscar sinónimos dentro de los archivos. Los siguientes pasos muestran cómo buscar sinónimos (palabras con significados similares) en archivos dentro de una carpeta usando Java:
- Definir la carpeta índice, la carpeta del documento y la consulta (la palabra a buscar).
- Cree un índice usando una carpeta de índice definida usando la clase Índice.
- Agregar la carpeta de documentos al índice.
- Habilite la búsqueda de sinónimos utilizando Opciones de búsqueda.
- Llame al método buscar de la clase Index y pase la consulta con las opciones de búsqueda.
- Imprima el resumen utilizando las propiedades de la clase SearchResult recuperada.
El siguiente código fuente muestra cómo encontrar todos los sinónimos dentro de los archivos usando Java:
// Busque sinónimos en múltiples archivos y carpetas usando Java
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "make";
// Crear un índice en la carpeta especificada
Index index = new Index(indexFolder);
index.add(documentsFolder);
// Creación de un objeto de opciones de búsqueda
SearchOptions options = new SearchOptions();
options.setUseSynonymSearch(true); // Enable Synonym Search
// Buscar la palabra 'hacer'
// Además de la palabra 'hacer', también se buscarán los sinónimos 'hacer, conseguir, tener,...'
SearchResult result = index.search(query, options);
System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Synonym Occurrences: " + result.getOccurrenceCount());
La siguiente es la salida del código anterior:
Query: **make**
Documents: 3
Word & Synonym Occurrences: 44
Impresión de resultados de búsqueda de sinónimos usando Java
A partir de los resultados de búsqueda obtenidos en el paso anterior, puede obtener información sobre cada palabra y sinónimo de la búsqueda. Los siguientes pasos presentan los resultados en detalle después de obtener todos los sinónimos y su número de ocurrencias dentro de cada documento:
- En primer lugar, realice la búsqueda para obtener el Resultado de la búsqueda.
- Recorrer el resultado de la búsqueda para trabajar con cada FoundDocument.
- Imprimir las propiedades respectivas de cada FoundDocument.
- Ahora, extraiga y luego recorra el FoundDocumentField dentro de cada FoundDocument.
- Cada FoundDocumentField tiene sus términos, ocurrencias y otras propiedades en él. Use el captador respectivo.
El siguiente código fuente muestra el resultado de la búsqueda de sinónimos junto con el número de ocurrencias de cada término buscado en Java.
// Imprimir los resultados de la búsqueda de sinónimos en Java
System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Synonym Occurrences: " + result.getOccurrenceCount());
for (int i = 0; i < result.getDocumentCount(); i++) {
FoundDocument document = result.getFoundDocument(i);
System.out.println("Document: " + document.getDocumentInfo().getFilePath());
System.out.println("Occurrences: " + document.getOccurrenceCount());
for (FoundDocumentField field : document.getFoundFields()) {
System.out.println("\tField: " + field.getFieldName());
System.out.println("\tOccurrences: " + document.getOccurrenceCount());
// Imprimir términos encontrados
if (field.getTerms() != null) {
for (int k = 0; k < field.getTerms().length; k++) {
System.out.println("\t\t" + field.getTerms()[k] + "\t - \t" + field.getTermsOccurrences()[k]);
}
}
}
}
La siguiente es la salida del código anterior:
Query: **make**
Documents: 2
Total occurrences: 22
Document: C:/documents/sample.docx
Occurrences: 13
Field: content
Occurrences: 13
**make** - 2
**have** - 1
**get** - 2
**do** - 8
- - - - - - - - - - - - - - - -
Document: C:/documents/sample.txt
Occurrences: 11
Field: content
Occurrences: 11
**make** - 1
**have** - 2
**get** - 1
**do** - 7
- - - - - - - - - - - - - - - -
Document: C:/documents/sample.pdf
Occurrences: 20
Field: content
Occurrences: 20
**make** - 2
**have** - 2
**get** - 2
**do** - 14
Buscar sinónimos e imprimir resultados en Java – Código completo
Combinemos los dos pasos anteriores, así que aquí está el código fuente completo. En primer lugar, encuentra todos los sinónimos según la consulta proporcionada. Luego, imprime todas las apariciones de cada sinónimo en cada documento en Java.
// Busque sinónimos en múltiples archivos y carpetas usando Java
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "make";
// Crear un índice en la carpeta especificada
Index index = new Index(indexFolder);
index.add(documentsFolder);
// Creación de un objeto de opciones de búsqueda
SearchOptions options = new SearchOptions();
options.setUseSynonymSearch(true); // Enable Synonym Search
// Buscar la palabra 'hacer'
// Además de la palabra 'hacer', también se buscarán los sinónimos 'hacer, conseguir, tener,...'
SearchResult result = index.search(query, options);
System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Synonym Occurrences: " + result.getOccurrenceCount());
for (int i = 0; i < result.getDocumentCount(); i++) {
FoundDocument document = result.getFoundDocument(i);
System.out.println("Document: " + document.getDocumentInfo().getFilePath());
System.out.println("Occurrences: " + document.getOccurrenceCount());
for (FoundDocumentField field : document.getFoundFields()) {
System.out.println("\tField: " + field.getFieldName());
System.out.println("\tOccurrences: " + document.getOccurrenceCount());
// Imprimir términos encontrados
if (field.getTerms() != null) {
for (int k = 0; k < field.getTerms().length; k++) {
System.out.println("\t\t" + field.getTerms()[k] + "\t - \t" + field.getTermsOccurrences()[k]);
}
}
}
}
Obtenga una licencia de API gratuita
Puede obtener una licencia temporal gratuita para utilizar la API sin las limitaciones de evaluación.
Conclusión
Para resumir, discutimos cómo buscar cualquier palabra junto con su sinónimo en múltiples documentos usando Java. Lo que es más importante, ahora puede intentar desarrollar su propia aplicación Java para realizar búsquedas como Aplicación GroupDocs.Search.
Obtenga más información sobre la API de automatización de búsqueda de Java en la documentación. Para experimentar las funciones, pruebe ejemplos del repositorio GitHub. No dude en comunicarse con nosotros para cualquier consulta a través del foro.