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.
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.
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.