W innym artykule widzieliśmy, czym są synonimy i jak uzyskać wszystkie synonimy dowolnego słowa. A co ze znalezieniem tych synonimów w różnych dokumentach? Z tego artykułu dowiesz się, jak wyszukiwać synonimy określonego zapytania (słowo) w wielu plikach przy użyciu języka C#.
Poniżej zostaną omówione następujące tematy:
- Interfejs API platformy .NET — wyszukiwanie synonimów
- Znajdź synonimy w dokumentach za pomocą C#
- Prezentuj wyniki wyszukiwania synonimów przy użyciu języka C#
- Kompletny kod — wyszukaj i wydrukuj wyniki wyszukiwania synonimów
.NET API do wyszukiwania synonimów w wielu plikach
GroupDocs.Search zapewnia interfejs API .NET, który umożliwia wyszukiwanie dowolnego słowa i jego synonimów w wielu plikach określonego folderu. Będę używać tego interfejsu API w pokazanych przykładach tego artykułu. Pozwala na przeszukiwanie dużej listy formatów dokumentów. Oprócz wyszukiwania synonimów GroupDocs.Search for .NET obsługuje również inne techniki wyszukiwania, w tym:
- Wyszukiwanie rozmyte
- Wyszukiwanie z uwzględnieniem wielkości liter
- Wyszukiwanie homofonów
- Wyszukiwanie wyrażeń regularnych
- Wyszukiwanie dzikich kart
Możesz pobrać instalator bibliotek DLL lub MSI z sekcji pobierania lub zainstalować interfejs API w swojej aplikacji .NET za pośrednictwem NuGet.
PM> Install-Package GroupDocs.Search
Znajdź synonimy w wielu plikach za pomocą C#
Kroki pokazują, jak wyszukiwać synonimy (słowa o podobnym znaczeniu) w plikach w folderze przy użyciu języka C#.
- Zdefiniuj zapytanie wyszukiwania, folder indeksu i folder dokumentu.
- Utwórz indeks ze zdefiniowanym folderem indeksu przy użyciu klasy Indeks.
- Dodaj folder dokumentu do indeksu.
- Utwórz SearchOptions i ustaw UseSynonymSearch na true.
- Wywołaj metodę Search klasy Index i przekaż opcje zapytania i wyszukiwania.
- Aby wydrukować podsumowanie, użyj właściwości pobranego SearchResult.
Kod źródłowy pokazuje, jak znaleźć wszystkie synonimy we wszystkich plikach folderu przy użyciu języka C#
// Wyszukaj synonimy w wielu plikach i folderach za pomocą C#
string query = "make";
string indexFolder = @"path\indexFolder";
string documentsFolder = @"path\documentsFolder";
// Tworzenie indeksu w określonym folderze
Index index = new Index(indexFolder);
index.Add(documentsFolder);
// Tworzenie obiektu opcji wyszukiwania
SearchOptions options = new SearchOptions();
options.UseSynonymSearch = true; // Enabling Synonym Search
// Wyszukaj słowo „robić”
// Oprócz słowa „make” wyszukiwane będą również synonimy „robić, powodować, dostawać,…”
SearchResult result = index.Search(query, options);
Console.WriteLine("Query: " + query);
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Occurrences: " + result.OccurrenceCount);
Query: **make**
Documents: 2
Occurrences: 22
Drukowanie wyników wyszukiwania synonimów przy użyciu języka C#
Poniższe kroki umożliwiają szczegółowe wydrukowanie wyników po uzyskaniu wszystkich synonimów i liczby ich wystąpień w każdym dokumencie.
- Przejrzyj wyniki wyszukiwania, które są pobierane przy użyciu powyższego kodu.
- Pobierz każdy FoundDocument przy użyciu metody GetFoundDocument.
- Wydrukuj odpowiednie właściwości każdego znalezionego dokumentu.
- Przejrzyj FoundFields w obrębie każdego FoundDocument, aby uzyskać Found Document Field.
- Z każdego pola FoundDocumentField można uzyskać jego warunki i liczbę wystąpień w każdym dokumencie.
Poniższy kod źródłowy drukuje wyniki wyszukiwania synonimów wraz z liczbą wystąpień każdego wyszukiwanego terminu przy użyciu języka C#.
// Drukowanie wyników wyszukiwania synonimów w języku C#
Console.WriteLine("Query: " + query);
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount + "\n");
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);
// Drukowanie znalezionych terminów
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]);
}
}
}
}
Query: **make**
Documents: 2
Total occurrences: 22
Document: C:/documents/sample.docx
Occurrences: 6
Field: content
Occurrences: 6
make 1
get 2
cause 1
do 2
Document: C:/documents/sample.txt
Occurrences: 16
Field: content
Occurrences: 16
get 4
cause 1
do 11
Wyszukiwanie synonimów i drukowanie wyników przy użyciu języka C# — pełny kod
Oto kompletny kod źródłowy, który najpierw znajduje wszystkie synonimy zgodnie z podanym zapytaniem, a następnie drukuje wszystkie wystąpienia wszystkich synonimów w każdym dokumencie w tym folderze przy użyciu języka C#.
// Wyszukaj synonimy w wielu plikach i folderach i wydrukuj wyniki za pomocą C#
string query = "make";
string indexFolder = @"path\indexFolder";
string documentsFolder = @"path\documentsFolder";
// Tworzenie indeksu w określonym folderze
Index index = new Index(indexFolder);
// Indeksowanie dokumentów z określonego folderu
index.Add(documentsFolder);
// Tworzenie obiektu opcji wyszukiwania
SearchOptions options = new SearchOptions();
options.UseSynonymSearch = true; // Enabling synonym search
// Wyszukaj słowo „robić”
// Oprócz słowa „make” wyszukiwane będą również słowa „zrobić, spowodować, uzyskać…”
SearchResult result = index.Search(query, options);
// Drukowanie wyniku
Console.WriteLine("Query: " + query);
Console.WriteLine("Documents: " + result.DocumentCount);
Console.WriteLine("Total occurrences: " + result.OccurrenceCount + "\n");
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);
// Drukowanie znalezionych terminów
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]);
}
}
}
}
Wniosek
Podsumowując, nauczyłeś się znajdować określone słowa, a także ich synonimy w wielu dokumentach w określonym folderze, używając C#. Możesz spróbować opracować własną aplikację .NET do wyszukiwania dowolnego słowa i jego synonimów w wielu plikach.
Dowiedz się więcej o interfejsie .NET Search Automation API z dokumentacji. Aby zapoznać się z funkcjami, możesz zapoznać się z przykładami w repozytorium GitHub. W przypadku jakichkolwiek pytań skontaktuj się z nami za pośrednictwem forum.