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 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 

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.

Ver también