A pesquisa de texto completo é uma maneira de pesquisar um texto/consulta em uma coleção de documentos. Essa abordagem encontra rapidamente todas as instâncias de um termo/frase e funciona usando índices de texto. Neste artigo, aprenderemos como pesquisar texto completo programaticamente em documentos usando Java.

Pesquisa de texto completo

Depois disso, você pode implementar várias técnicas de pesquisa e criar sua solução de pesquisa para documentos de processamento de texto, planilhas, apresentações, arquivos HTML, arquivos PDF, eBooks, mensagens de e-mail, arquivos ZIP e muitos outros formatos de documentos.

Os seguintes tópicos são abordados abaixo:

API Java para pesquisa de texto completo

GroupDocs.Search fornece uma API Java de pesquisa de texto completo que pode ser integrada a qualquer aplicativo sem qualquer ferramenta de terceiros e dependência de software. Ele permite que você pesquise em uma grande lista de formatos de documentos. Algumas das técnicas de pesquisa que podem ser realizadas usando a API são as seguintes:

  • Pesquisa sensível a maiúsculas e minúsculas
  • Pesquisa de expressão regular
  • Pesquisa Facetada
  • Pesquisa difusa
  • Pesquisa homófona
  • 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 pox.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.3</version> 
</dependency>

Há duas etapas para realizar a pesquisa em arquivos armazenados em uma pasta.

  • Indexação
  • Realizar pesquisa

Indexar arquivos usando Java

Um índice possui texto digitalizado de todos os documentos. Portanto, quando você for realizar uma operação de pesquisa, apenas o índice será referenciado, em vez do texto dos documentos originais. Para possibilitar a pesquisa instantânea em milhares de documentos com formatos de arquivo iguais ou diferentes, você precisa criar um índice e adicionar esses documentos a ele. Quando os documentos são indexados, o índice está pronto para lidar com as consultas de pesquisa.

As duas linhas simples a seguir criam um índice e também adicionam a pasta de documentos ao índice.

Index index = new Index("indexingFolderPath");
index.add("documentsFolderPath");

Depois de indexar vários documentos do mesmo ou de formatos diferentes como (Word, PDF, Excel e HTML), podemos avançar para processar uma consulta de pesquisa específica (termo de pesquisa “Draw”) sobre eles. A seguir estão as etapas de como realizar pesquisa de texto em vários documentos em uma pasta usando Java:

  • Especifique a pasta de origem dos documentos e a pasta de índice.
  • Crie Index usando a pasta index.
  • Adicione a pasta de origem ao arquivo index.
  • Prepare a string de consulta.
  • Realize uma pesquisa usando o método search da classe Index.
  • Percorra cada resultado da pesquisa para as propriedades de cada documento.

O código-fonte a seguir realiza pesquisa de texto em Java em todos os documentos da pasta fornecida.

// Pesquise o texto especificado em vários documentos PDF, Word, Excel, HTML em uma pasta usando Java
Index index = new Index("path/indexingFolder");
index.add("path/documentsFolderPath");

// Pesquisando no índice para o texto especificado
SearchResult result = index.search("Draw");

for (int i = 0; i < result.getDocumentCount(); i++) {
    FoundDocument document = result.getFoundDocument(i);
    System.out.println("Document Path: " + document.getDocumentInfo().getFilePath());
    System.out.println("Occurrence : " + document.getOccurrenceCount());
}

Obteremos o caminho do documento e o número de ocorrências dos termos de pesquisa em todos os documentos com essa pasta especificada. Aqui está a captura de tela para visualização.

Saída de texto de pesquisa completa

Realçar resultados de pesquisa de texto em Java

Vamos agora realizar a mesma pesquisa de texto completo e também destacar todas as ocorrências que correspondem à sua consulta.

As etapas a seguir mostram como destacar os resultados da pesquisa de texto:

  • Crie Index e adicione a pasta de documentos ao índice.
  • Prepare a string de consulta.
  • Pesquise a pasta de documentos usando o método search.
  • Ao percorrer os resultados, crie o marcador usando o HtmlHighlighter.
  • Use o método de destaque para destacar os resultados da pesquisa.

O código a seguir gera a saída HTML com resultados de pesquisa destacados usando Java.

// Realce os resultados da pesquisa de texto completo de vários documentos em uma pasta em Java
Index index = new Index("path/indexingFolder");
index.add("path/documentsFolderPath"); // Synchronous indexing documents from the specified folder

String query = "draw"; // Specify a search query
SearchResult result = index.search(query); // Searching in the index

for (int i = 0; i < result.getDocumentCount(); i++) 
{
    FoundDocument document = result.getFoundDocument(i);

    String path = "path/Highlighted-"+ i +".html";
    OutputAdapter outputAdapter = new FileOutputAdapter(path); 
    HtmlHighlighter highlighter = new HtmlHighlighter(outputAdapter); // Creating the highlighter
    index.highlight(document, highlighter); // Generates HTML formatted output document with highlighted search results
}

Como saída, obteremos vários arquivos HTML. Cada arquivo mostrará o conteúdo de um documento separado (por exemplo, excel.xlsx, source.docx, target.docx) com termos/palavras de pesquisa destacadas. Abaixo está a saída HTML destacada de um arquivo DOCX, arquivo TXT e arquivo PDF obtido usando o código acima.

Realce resultados de pesquisa de texto completo em conteúdo usando Java

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

Neste artigo, aprendemos a pesquisar texto em vários documentos de uma pasta em Java. Além disso, discutimos como destacar programaticamente o texto dos resultados da pesquisa no formato HTML para arquivos MS Word, arquivos TXT e arquivos PDF usando GroupDocs.Search for Java.

Você pode aprender mais sobre a API usando documentação. Muitos outros exemplos estão disponíveis em GitHub. Para dúvidas, entre em contato conosco através do fórum.

Veja também