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.
Os seguintes tópicos são abordados abaixo:
- API .NET para pesquisa de texto completo
- Pesquisa de texto completo
- Executar pesquisa em C#
- Destacar resultados da pesquisa
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.
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.
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.