Czy zastanawiałeś się kiedyś, jak łatwo przeszukiwać wiele plików lub pokonać wyzwanie polegające na przeszukiwaniu plików w różnych folderach? W tym artykule znajdziesz odpowiedzi, których szukasz. Zanurzmy się w świat wyszukiwania tekstu i odkryjmy, jak wyszukiwać różne teksty lub frazy w różnych plikach i różnych folderach przy użyciu języka C#.

API C# do skanowania tekstu pomiędzy plikami i folderami

Teraz wykorzystamy interfejs API GroupDocs.Search for .NET do eksploracji licznych tekstów w plikach o różnych formatach w różnych folderach. Ta biblioteka umożliwia nam systematyczne skanowanie tekstu w szerokiej gamie formatów plików, takich jak dokumenty programu Word, arkusze kalkulacyjne, prezentacje, pliki PDF, pliki znaczników, książki elektroniczne, wiadomości e-mail, dokumenty One Note i archiwa ZIP. Szczegółową listę obsługiwanych formatów plików można znaleźć w obszernej dokumentacji.

Masz możliwość pobrania bibliotek DLL lub instalatora MSI z sekcji pobierania lub możesz zainstalować interfejs API w aplikacji .NET za pomocą NuGet.

PM> Install-Package GroupDocs.Search

Wyszukiwanie wielu tekstów w plikach w folderach przy użyciu języka C#

Wykonaj poniższe kroki, aby przeprowadzić wyszukiwanie tekstowe w wielu plikach w wielu folderach przy użyciu języka C# i wygenerować wyróżnione pliki wyjściowe HTML dla każdego znalezionego dokumentu.

  • Utwórz obiekt Indeks z określoną ścieżką folderu indeksu.
  • Indeksuj nadrzędny folder dokumentów przy użyciu metody Dodaj.
  • Zdefiniuj zapytanie zawierające wiele terminów lub wyrażeń.
  • Wykonaj skanowanie tekstu metodą wyszukiwania i zapisz wyniki.
  • Iteruj po wynikach wyszukiwania:
    • Pobierz każdy znaleziony dokument za pomocą metody GetFoundDocument.
    • Pobierz lub wydrukuj informacje o pliku znalezionego dokumentu.
    • Skonfiguruj OutputAdapter dla żądanego formatu i ścieżki.
    • Utwórz Zakreślacz dla dokumentu.
    • Podświetl i zapisz wyniki wyszukiwania w pliku HTML, korzystając z metody Highlight.
// Wyszukiwanie tekstowe w wielu plikach o różnych formatach w wielu folderach przy użyciu języka C#

// Tworzenie indeksu i indeksowanie dokumentów z określonego folderu
Index index = new Index("path/for/indexingFolder");
index.Add("path/parent-folder/");

// Wyszukaj dokumenty zawierające słowo „woda”, „nie” lub frazę „Lorem ipsum”
string query = "water OR \"Lorem ipsum\" OR non";
SearchResult result = index.Search(query);

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

    // Podkreśl wyniki wyszukiwania
    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
}

Powyższy kod umożliwia wyszukiwanie określonych tekstów w wielu plikach i tworzenie podświetlonych plików wyjściowych HTML dla każdego znalezionego dokumentu.

Wyróżnione wyniki wyszukiwania tekstu w formacie HTML

Drukowanie wyników wyszukiwania tekstowego

Z wyniku wyszukiwania możesz dodatkowo wydobyć informacje o znalezionych dokumentach.

// Drukowanie wyniku
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);

        // Drukuję znalezione terminy
        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]);
            }
        }
        // Drukowanie znalezionych fraz
        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]);
            }
        }
    }
}

Poniższy wynik będzie wynikiem wydruku powyższych wyników wyszukiwania uzyskanych z plików DOCX, PDF i 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

Kompletny kod

Oto kompletny kod C#, który wspólnie przeszukuje ciągi tekstowe i frazy w wielu plikach i folderach:

// Wyszukiwanie tekstowe w wielu plikach o różnych formatach w wielu folderach przy użyciu języka C#

// Tworzenie indeksu i indeksowanie dokumentów z określonego folderu
Index index = new Index("path/for/indexingFolder");
index.Add("path/parent-folder/");

// Wyszukaj dokumenty zawierające słowo „woda”, „nie” lub frazę „Lorem ipsum”
string query = "water OR \"Lorem ipsum\" OR non";
SearchResult result = index.Search(query);

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

    // Podkreśl wyniki wyszukiwania
    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);

        // Drukuję znalezione terminy
        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]);
            }
        }
        // Drukowanie znalezionych fraz
        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]);
            }
        }
    }
}

Uzyskanie bezpłatnej licencji lub bezpłatnej wersji próbnej

Darmowa licencja

Uzyskaj bezpłatną licencję tymczasową, aby móc przeglądać tę bibliotekę bez ograniczeń.

Bezpłatny okres próbny

Możesz pobrać bezpłatną wersję próbną z sekcji pobierania.

Interfejs API .NET do wyszukiwania w plikach i folderach

Wniosek

W tym artykule zbadaliśmy skanowanie tekstu w celu wyszukiwania różnych tekstów w wielu plikach w kilku folderach przy użyciu języka C#. Rozpoczynając od zapytania, przeszukaliśmy wiele plików i folderów, podkreślając wyszukiwane słowa lub frazy w odpowiednich plikach HTML.

Aby uzyskać szczegółowe informacje na temat interfejsu API, czytelnikom zaleca się zapoznanie z dokumentacją.

Wszelkie zapytania lub dodatkowe dyskusje można kierować na dostępne forum.

Zobacz też