Recentemente discutimos como obter todos os sinônimos de qualquer palavra. Seria maravilhoso se pudéssemos localizar esses sinônimos em muitos documentos diferentes. Neste artigo, veremos como pesquisar qualquer palavra e seus sinônimos em vários arquivos usando Java.

Seguem os tópicos abordados abaixo:

API Java - Pesquisar sinônimos em vários arquivos

GroupDocs.Search apresenta a API Java GroupDocs.Search for Java. Permite pesquisar palavras e seus sinônimos em vários arquivos múltiplos da pasta especificada. Suporta uma longa lista de diferentes formatos de arquivo e várias técnicas de pesquisa. Alguns desses recursos são mencionados abaixo e você pode usá-los em combinação para atingir seu objetivo:

  • Pesquisa booleana
  • Pesquisa sensível a maiúsculas e minúsculas
  • Destaque os resultados da pesquisa
  • Pesquisa homófona
  • Pesquisa de frase
  • Pesquisa de expressões regulares
  • Pesquisa por pedaços
  • Pesquisa de sinônimos

Baixe ou configure

Você pode baixar o arquivo JAR da seção de downloads, ou apenas obter o repositório mais recente e as configurações de dependência para o pom.xml de seus aplicativos Java baseados em 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>

Encontre sinônimos em vários arquivos usando Java

Vamos passar rapidamente para pesquisar sinônimos nos arquivos. As etapas a seguir mostram como pesquisar sinônimos (palavras com significados semelhantes) em arquivos dentro de uma pasta usando Java:

  • Defina a pasta de índice, a pasta do documento e a consulta (a palavra a ser pesquisada).
  • Crie um índice usando a pasta de índice definida usando a classe Index.
  • Adicione a pasta dos documentos ao índice.
  • Habilite a Pesquisa de Sinônimos usando SearchOptions.
  • Chame o método search da classe Index e passe a consulta com as opções de pesquisa.
  • Imprima o resumo usando as propriedades da classe SearchResult recuperada.

O código-fonte a seguir mostra como encontrar todos os sinônimos em arquivos usando Java:

// Pesquise sinônimos em vários arquivos e pastas usando Java
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "make";

// 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.setUseSynonymSearch(true); // Enable Synonym Search

// Procure a palavra 'fazer'
// Além da palavra 'make', também serão pesquisados os sinônimos 'do, get, have, ...'
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());

Segue a saída do código acima:

Query: **make**
Documents: 3
Word & Synonym Occurrences: 44 

A partir dos resultados da pesquisa obtidos na etapa acima, é possível obter as informações referentes a cada palavra e sinônimo da pesquisa. As etapas a seguir apresentam os resultados em detalhes após obter todos os sinônimos e seu número de ocorrências dentro de cada documento:

  • Primeiramente, faça a busca para obter o SearchResult.
  • Atravesse o resultado da pesquisa para trabalhar com cada FoundDocument.
  • Imprima as respectivas propriedades de cada FoundDocument.
  • Agora, extraia e percorra o FoundDocumentField dentro de cada FoundDocument.
  • Cada FoundDocumentField contém seus termos, ocorrências e outras propriedades. Use o respectivo getter.

O código-fonte a seguir exibe o resultado da pesquisa de sinônimos junto com o número de ocorrências de cada termo pesquisado em Java.

// Imprimindo os resultados da Pesquisa de Sinônimos em 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());
  
        // 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]);
            }
        }
    }
}

Segue a saída do código acima:

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 

Pesquisa de sinônimos e resultados de impressão em Java – código completo

Vamos combinar as duas etapas acima, então aqui está o código-fonte completo. Primeiramente, ele encontra todos os sinônimos de acordo com a consulta fornecida. Em seguida, ele imprime todas as ocorrências de cada sinônimo em cada documento em Java.

// Pesquise sinônimos em vários arquivos e pastas usando Java
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "make";

// 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.setUseSynonymSearch(true); // Enable Synonym Search

// Procure a palavra 'fazer'
// Além da palavra 'make', também serão pesquisados os sinônimos 'do, get, have, ...'
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());
  
        // 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]);
            }
        }
    }
}

Obtenha uma licença de API gratuita

Você pode obter uma licença temporária gratuita para usar a API sem as limitações de avaliação.

Conclusão

Para resumir, discutimos como pesquisar qualquer palavra junto com seu sinônimo em vários documentos usando Java. Mais importante, agora você pode tentar desenvolver seu próprio aplicativo Java para pesquisa como GroupDocs.Search App.

Saiba mais sobre a API Java Search Automation na documentação. Para experimentar os recursos, experimente exemplos do repositório GitHub. Sinta-se à vontade para entrar em contato conosco para qualquer dúvida através do fórum.

Veja também