Você já se perguntou como pesquisar facilmente vários arquivos ou enfrentar o desafio de pesquisar arquivos em pastas diferentes? Este artigo tem as respostas que você procura. Vamos mergulhar no mundo da pesquisa de texto e explorar como pesquisar vários textos ou frases em diferentes arquivos em diversas pastas usando C#.

API C# para verificação de texto em arquivos e pastas

Agora, utilizaremos a API GroupDocs.Search for .NET para explorar vários textos em arquivos de diversos formatos em pastas. Essa biblioteca nos permite digitalizar texto sistematicamente em uma ampla variedade de formatos de arquivo, como documentos do Word, planilhas, apresentações, arquivos PDF, arquivos de marcação, e-books, mensagens de e-mail, documentos do One Note e arquivos ZIP. Para obter uma lista detalhada dos formatos de arquivo suportados, consulte a documentação abrangente.

Você tem a opção de obter as DLLs ou o instalador MSI na seção de downloads, ou pode instalar a API em seu aplicativo .NET usando NuGet.

PM> Install-Package GroupDocs.Search

Pesquisando vários textos em arquivos em pastas usando C#

Siga estas etapas para realizar uma pesquisa de texto em vários arquivos em várias pastas usando C# e gerar arquivos de saída HTML destacados para cada documento encontrado.

  • Crie um objeto Index com o caminho da pasta de índice especificado.
  • Indexe a pasta do documento pai usando o método Add.
  • Defina uma consulta de pesquisa com vários termos ou frases.
  • Execute a digitalização de texto usando o método Search e armazene os resultados.
  • Itere pelos resultados da pesquisa:
    • Recupere cada documento encontrado usando o método GetFoundDocument.
    • Recupere ou imprima qualquer informação de arquivo do documento encontrado.
    • Configure um OutputAdapter para o formato e caminho desejado.
    • Crie um Marcador para o documento.
    • Destaque e envie os resultados da pesquisa para um arquivo HTML usando o método Highlight.
// Pesquisa de texto em vários arquivos de vários formatos de arquivo em várias pastas usando C#

// Criando um índice e indexando documentos da pasta especificada
Index index = new Index("path/for/indexingFolder");
index.Add("path/parent-folder/");

// Pesquise documentos que contenham a palavra 'água' ou 'não' ou a frase 'Lorem ipsum'
string query = "water OR \"Lorem ipsum\" OR non";
SearchResult result = index.Search(query);

// Imprimindo o resultado
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount);
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);

    // Destaque os resultados da pesquisa
    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "/path/Highlighted-" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter);
    index.Highlight(document, highlighter); // Generating HTML formatted text with highlighted occurrences
}

O código acima permite procurar textos específicos em vários arquivos e criar arquivos de saída HTML destacados para cada documento encontrado.

Resultados de pesquisa de texto destacado em formato HTML

Imprimindo os resultados da pesquisa de texto

A partir do resultado da consulta de pesquisa, você pode extrair ainda mais informações sobre os documentos encontrados.

// Imprimindo o resultado
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount);
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);

    Console.WriteLine("Document: " + document.DocumentInfo.FilePath);
    Console.WriteLine("Occurrences: " + document.OccurrenceCount);
    for (int j = 0; j < document.FoundFields.Length; j++)
    {
        FoundDocumentField field = document.FoundFields[j];
        Console.WriteLine("\tField: " + field.FieldName);
        Console.WriteLine("\tOccurrences: " + document.OccurrenceCount);

        // Imprimindo termos encontrados
        if (field.Terms != null)
        {
            for (int k = 0; k < field.Terms.Length; k++)
            {
                Console.WriteLine("\t\t" + field.Terms[k].PadRight(20) + field.TermsOccurrences[k]);
            }
        }
        // Imprimindo frases encontradas
        if (field.TermSequences != null)
        {
            for (int k = 0; k < field.TermSequences.Length; k++)
            {
                string sequence = string.Join(" ", field.TermSequences[k]);
                Console.WriteLine("\t\t" + sequence.PadRight(30) + field.TermSequencesOccurrences[k]);
            }
        }
    }
}

A seguir será o resultado da impressão dos resultados da pesquisa acima obtidos dos arquivos DOCX, PDF e TXT:

Documents: 3
Total occurrences: 141
	Document: Lorem ipsum.docx
	Occurrences: 101
		Field: filename
		Occurrences: 101
			lorem ipsum		1
		Field: content
		Occurrences: 101
			non			94
			lorem ipsum		6
	Document: Lorem ipsum.pdf
	Occurrences: 1
		Field: filename
		Occurrences: 1
			lorem ipsum		1
	Document: English.txt
	Occurrences: 39
		Field: content
		Occurrences: 39
			water			39

Código completo

Aqui está o código C# completo que pesquisa coletivamente as strings de texto e frases em vários arquivos e pastas:

// Pesquisa de texto em vários arquivos de vários formatos de arquivo em várias pastas usando C#

// Criando um índice e indexando documentos da pasta especificada
Index index = new Index("path/for/indexingFolder");
index.Add("path/parent-folder/");

// Pesquise documentos que contenham a palavra 'água' ou 'não' ou a frase 'Lorem ipsum'
string query = "water OR \"Lorem ipsum\" OR non";
SearchResult result = index.Search(query);

// Imprimindo o resultado
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount);
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);

    // Destaque os resultados da pesquisa
    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "/path/Highlighted-" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter);
    index.Highlight(document, highlighter); // Generating HTML formatted text with highlighted occurrences

    Console.WriteLine("Document: " + document.DocumentInfo.FilePath);
    Console.WriteLine("Occurrences: " + document.OccurrenceCount);
    for (int j = 0; j < document.FoundFields.Length; j++)
    {
        FoundDocumentField field = document.FoundFields[j];
        Console.WriteLine("\tField: " + field.FieldName);
        Console.WriteLine("\tOccurrences: " + document.OccurrenceCount);

        // Imprimindo termos encontrados
        if (field.Terms != null)
        {
            for (int k = 0; k < field.Terms.Length; k++)
            {
                Console.WriteLine("\t\t" + field.Terms[k].PadRight(20) + field.TermsOccurrences[k]);
            }
        }
        // Imprimindo frases encontradas
        if (field.TermSequences != null)
        {
            for (int k = 0; k < field.TermSequences.Length; k++)
            {
                string sequence = string.Join(" ", field.TermSequences[k]);
                Console.WriteLine("\t\t" + sequence.PadRight(30) + field.TermSequencesOccurrences[k]);
            }
        }
    }
}

Obtendo uma licença gratuita ou uma avaliação gratuita

Licença gratuita

Obtenha uma licença temporária gratuita para explorar esta biblioteca sem restrições.

Teste grátis

Você pode baixar a versão de avaliação gratuita na seção de downloads.

API .NET para pesquisa em arquivos e pastas

Conclusão

Neste artigo, investigamos a verificação de texto para pesquisar vários textos em vários arquivos em várias pastas usando C#. Começando com a consulta de pesquisa, exploramos vários arquivos e pastas, destacando as palavras ou frases pesquisadas nos respectivos arquivos HTML.

Para obter detalhes abrangentes sobre a API, os leitores são aconselhados a consultar a documentação.

Quaisquer dúvidas ou discussões adicionais podem ser direcionadas para o fórum disponível.

Veja também