Pesquisar homófonos em arquivos usando GroupDocs

Sinônimos são palavras com significado semelhante, e Homófonos soam iguais, mas são diferentes em significados ou grafias. Aprendemos a encontrar sinônimos em vários documentos usando Java. Hoje, neste artigo, veremos como pesquisar homófonos em vários documentos usando Java.

Os seguintes tópicos serão abordados a seguir:

API Java para pesquisar homófonos

GroupDocs.Search apresenta a API Java GroupDocs.Search for Java que permite localizar qualquer palavra e seus homófonos em vários arquivos de qualquer pasta específica. Ele pode pesquisar o conteúdo de vários formatos diferentes. Além de localizar os homófonos, a API oferece suporte a muitas outras técnicas de pesquisa, que incluem:

  • Pesquisa que diferencia maiúsculas de minúsculas
  • pesquisa difusa
  • Pesquisa de frase
  • Pesquisa de Expressões Regulares
  • Pesquisa de sinônimos
  • Pesquisa de curinga

Você pode baixar o arquivo JAR da seção de downloads ou usar as configurações mais recentes de repositório e dependência Maven em seus aplicativos Java.

<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>
PM> Install-Package GroupDocs.Search

Encontre homófonos em vários arquivos em Java

As etapas a seguir orientam como pesquisar homófonos em vários arquivos de uma pasta em Java.

  • Defina a consulta da palavra de pesquisa, a pasta de indexação e a pasta do contêiner de seus arquivos.
  • Crie Índice com a pasta de índice definida.
  • Adicione a pasta do documento ao index.
  • Defina as SearchOptions e habilite o homophoneSearch usando o método setUseHomophoneSearch.
  • Realize a pesquisa de homófonos usando o método de pesquisa.
  • Use as propriedades do SearchResult recuperado conforme necessário.

O código-fonte Java a seguir localiza todos os homófonos nos arquivos da pasta definida. Além disso, você também pode gerenciar seu dicionário homófono.

// Pesquise homófonos em vários arquivos e pastas usando Java
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "right";

// Criando um índice na pasta especificada
Index index = new Index(indexFolder);
index.add(documentsFolder);

// Criando um objeto de opções de pesquisa
SearchOptions options = new SearchOptions();
options.setUseHomophoneSearch(true); // Enable Homophone Search

// Pesquise a palavra 'certo'
// Além da palavra 'right', também serão pesquisados os homófonos 'rite, write, wright,...'
SearchResult result = index.search(query, options);

System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Homophone Occurrences: " + result.getOccurrenceCount());

A saída do código acima é a seguinte:

Query: right
Documents: 2
Occurrences: 17

Você pode usar os resultados da pesquisa de homófonos seguindo as etapas após obter os homófonos e suas ocorrências de cada documento.

  • Percorra os resultados da pesquisa.
  • Obtenha cada FoundDocument usando o método getFoundDocument.
  • Use as propriedades de cada FoundDocument conforme necessário.
  • Agora, percorra os campos de FoundDocument obtendo FoundDocumentField.
  • Posteriormente, de cada FoundDocumentField, obtenha todos os termos e suas ocorrências dentro de cada documento.

O exemplo de código Java a seguir imprime os resultados da pesquisa homófona junto com o número de ocorrências de cada termo pesquisado.

// Imprimindo os resultados da pesquisa homófona em Java
System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Homophone Occurrences: " + result.getOccurrenceCount());

// Atravesse os Documentos
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());
  
  // Atravesse os campos encontrados
  for (FoundDocumentField field : document.getFoundFields()) {
        System.out.println("\tField: " + field.getFieldName());
        System.out.println("\tOccurrences: " + document.getOccurrenceCount());
  
        // Imprimindo termos 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]);
            }
        }
    }
}

A seguir está a saída do exemplo de código acima.

Query: right
Documents: 2
Total occurrences: 17

Document: C:/documents/sample.docx
Occurrences: 11
    Field: content
    Occurrences: 11
        right             3
        rite               4
        wright           1
        write             3
Document: C:/documents/sample.txt
Occurrences: 6
    Field: content
    Occurrences: 6
        right             4
        write             2

Pesquisar homófonos e imprimir resultados usando Java - Código completo

O código Java a seguir combina as etapas acima. Inicialmente, ele encontra os homófonos conforme a consulta e, em seguida, imprime todas as ocorrências de homófonos de cada documento dentro da pasta fornecida.

// Pesquise homófonos em vários arquivos e pastas usando Java
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "right";

// Criando um índice na pasta especificada
Index index = new Index(indexFolder);
index.add(documentsFolder);

// Criando um objeto de opções de pesquisa
SearchOptions options = new SearchOptions();
options.setUseHomophoneSearch(true); // Enable Homophone Search

// Pesquise a palavra 'certo'
// Além da palavra 'right', também serão pesquisados os homófonos 'rite, write, wright,...'
SearchResult result = index.search(query, options);

System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Homophone 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());
  
        // Imprimindo termos 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]);
            }
        }
    }
}

Conclusão

Para concluir, você aprendeu como encontrar as palavras e seus homófonos em vários documentos dentro de uma pasta especificada usando Java. Você pode tentar desenvolver seu próprio aplicativo Java para pesquisar homófonos usando GroupDocs.Search for Java.

Saiba mais sobre a API Java Search Automation na documentação. Para experimentar suas funcionalidades, você pode dar uma olhada nos exemplos disponíveis no repositório GitHub. Entre em contato conosco para qualquer consulta através do fórum.

Veja também