Antes de entrarmos nos detalhes, vamos ter uma visão geral da técnica de pesquisa de texto completo. A pesquisa de texto completo é basicamente uma maneira mais avançada de pesquisar um texto/consulta em uma coleção de documentos. Essa abordagem localiza rapidamente todas as instâncias de um termo e funciona usando índices de texto. Neste artigo, aprenderemos como pesquisar texto completo programaticamente em documentos usando C#.

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

Um dos exemplos de implementação de pesquisa de texto completo está em processadores de texto e editores de texto. Ele ajuda você a encontrar uma frase ou palavra em qualquer lugar do documento.

Pesquisa de texto completo

Os seguintes tópicos são abordados abaixo:

API .NET para pesquisa de texto

GroupDocs.Search for .NET é uma API de pesquisa de back-end que permite pesquisa de texto completo e pode ser integrada a qualquer aplicativo .NET sem qualquer ferramenta de terceiros ou dependência de software. Ele permite que você pesquise em vários formatos de documentos em seus aplicativos.

Você pode baixar o instalador DLLs ou MSI da seção de downloads ou instalar a API em seu aplicativo .NET via NuGet.

PM> Install-Package GroupDocs.Search

Pesquisa de texto completo usando C#

Há duas etapas principais para realizar ou implementar uma pesquisa de texto completo.

  • Indexação
  • Realizar pesquisa

Indexação

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.

O que é um índice?

Um índice possui texto digitalizado de todos os documentos. Portanto, quando você vai realizar uma operação de pesquisa (pesquisar uma consulta específica), apenas o índice é referenciado, em vez do texto dos documentos originais.

Criação de índice

Um índice pode ser criado na memória ou em um disco. O índice criado na memória não pode ser salvo após sair do programa. Por outro lado, um índice criado no disco pode ser carregado no futuro para continuar funcionando. O exemplo a seguir mostra como criar um índice em um disco.

Index index = new Index("indexPath/FolderName/");

Quando os documentos são indexados, o índice está pronto para lidar com as consultas de pesquisa. A seguir estão algumas das técnicas de pesquisa que podem ser executadas usando GroupDocs.Search for .NET:

  • Pesquisa sensível a maiúsculas e minúsculas
  • Pesquisa de expressão regular
  • Pesquisa de frase
  • Pesquisa Facetada
  • Pesquisa de sinônimos
  • Pesquisa de curingas

Realizar pesquisa em C#

Começando com um caso de uso. Se tivermos vários documentos (Word, PDF, Excel e HTML) e quisermos realizar uma consulta de pesquisa específica (termo de pesquisa “vídeo”) sobre eles.

A seguir estão as etapas de como realizar a pesquisa de texto em vários documentos em uma pasta:

  • Decida a pasta de documentos de origem e a pasta de índice.
  • Prepare a string de consulta.
  • Crie Index usando a pasta index.
  • Adicione a pasta de documentos de origem ao índice.
  • Realize uma pesquisa usando a classe Index do método Search.
  • Traverse e resultados de pesquisa para as propriedades de cada documento.

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

// Pesquisar texto de consulta em todos os documentos da pasta fornecida em C#
string indexFolder =  @"indexPath/GroupDocs/index/";
string documentsFolder = @"documentPath/GroupDocs/source/";
string query = "video";

// Criando o índice na pasta especificada e adicionando a pasta de documentos ao Índice
Index index = new Index(indexFolder);
index.Add(documentsFolder);

// Pesquisando no índice
SearchResult result = index.Search(query);
Console.WriteLine("Documents found: " + result.DocumentCount);

// Percorra cada documento do Resultado da Pesquisa
foreach (FoundDocument document in result)
{
    Console.WriteLine("Document Path : " + document.DocumentInfo.FilePath);
    Console.WriteLine("Occurance : " + document.OccurrenceCount);
}

Obteremos o caminho do documento e o número de ocorrências do termo de pesquisa em todos os documentos disponíveis na pasta de documentos. Aqui está a captura de tela para visualizar.

Saída de texto de pesquisa completa

Realçar resultados de pesquisa de texto em C#

Vamos agora realizar a mesma pesquisa de texto, mas desta vez vamos destacar todas as ocorrências que correspondem à consulta.

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

  • Prepare a string de consulta.
  • Crie Index usando o caminho da pasta de índice.
  • Adicione a pasta de documentos de origem ao índice.
  • Pesquise a pasta de documentos usando o método Search.
  • Ao percorrer os resultados da pesquisa, crie o Highlighter.
  • Use o método Highlight da classe Index para destacar os resultados da pesquisa.

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

string indexFolder =    @"indexPath/GroupDocs/index/";
string documentFolder = @"documentPath/GroupDocs/source/";
string query = "draw";

// Crie um índice na pasta especificada e adicione a pasta de documentos ao Índice
Index index = new Index(indexFolder);
index.Add(documentFolder);

// Pesquise a palavra de consulta
SearchResult result = index.Search(query);

// Realce todas as ocorrências no texto
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);
                    
    string path = indexFolder + "Highlighted-"+ i +".html";
    OutputAdapter outputAdapter = new FileOutputAdapter(path); 
    Highlighter highlighter = new HtmlHighlighter(outputAdapter); 
    index.Highlight(document, highlighter);
}

Como saída, obteremos vários arquivos HTML. Cada arquivo mostrará o conteúdo de um documento diferente (por exemplo, excel.xlsx, source.docx, target.docx) com o termo/palavra de pesquisa destacado. Abaixo está a saída HTML destacada de um arquivo DOCX.

Realçar resultados de pesquisa de texto completo no conteúdo

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 usando C#. Além disso, discutimos como destacar programaticamente o texto dos resultados da pesquisa no formato HTML.

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