 
 
- Nie wiesz, jaki kolor lub pisownia koloru została użyta w dokumencie.
- Wyszukiwanie „John”, ale mogło zostać zapisane jako „Jon” lub może „Jhon”.
- Lokalizowanie „USA”, gdy użytkownik wprowadzi „USA”.
- Słowo lub fraza, której szukasz, może zawierać „błąd”, och, to znowu „błąd”.
Nadchodzi wyszukiwanie rozmyte. Wyszukiwanie rozmyte umożliwia znajdowanie w danych dopasowań przybliżonych, a nie dokładnych, co zapewnia elastyczność w zakresie zapytań. Jest to szczególnie przydatne w scenariuszach, w których występują literówki, błędy ortograficzne lub różnice w danych. W tym artykule pokazano, jak programowo przeprowadzić wyszukiwanie rozmyte w wielu dokumentach w folderach przy użyciu języka C#.
Biblioteka wyszukiwania rozmytego w języku C#
W przypadku wyszukiwania rozmytego użyjemy interfejsu API GroupDocs.Search for .NET. Pozwala to na pewien stopień tolerancji w pisowni, dzięki czemu skutecznie dostosowuje się do regionalnych różnic językowych, takich jak różnice między brytyjskim i amerykańskim angielskim.
Ta biblioteka umożliwia nam programowe wyszukiwanie tekstu w szerokiej gamie formatów plików, takich jak dokumenty Word (DOC, DOCX), arkusze kalkulacyjne (XLS, XLSX), prezentacje (PPT, PPTX), pliki PDF, znaczniki (HTML, XML), Markdown (MD), książki elektroniczne (EPUB, CHM, FB2), wiadomości e-mail (MSG, EML), dokumenty OneNote i archiwa ZIP.
Aby dowiedzieć się, z jakimi typami plików możesz pracować, zapoznaj się z dokumentacją.
Możesz pobrać biblioteki DLL lub instalator MSI z sekcji pobierania lub dodać interfejs API do swojego programu .NET za pomocą NuGet.
Przeprowadźmy wyszukiwanie rozmyte w plikach przy użyciu języka C#
Wykonaj poniższe kroki, aby przeprowadzić wyszukiwanie rozmyte w wielu plikach o różnych formatach w folderach przy użyciu języka C#:
- Utwórz Indeks, podając ścieżkę do folderu.
- Dodaj ścieżkę folderu nadrzędnego dla katalogu wyszukiwania do utworzonego indeksu.
- Zdefiniuj zapytanie wyszukiwania.
- Aktywuj wyszukiwanie rozmyte, włączając tę opcję.
- Ustaw poziom podobieństwa w algorytmie rozmytym zgodnie z wymaganiami.
- Wykonaj wyszukiwanie za pomocą metody wyszukiwania, aby uzyskać wyniki wyszukiwania.
- Teraz możesz iterować po SearchResults, aby utworzyć lub wydrukować wynik, jak chcesz.
Wyszukiwanie rozmyte w poniższym kodzie C# znajduje przybliżone dopasowania danego zapytania we wszystkich plikach we wszystkich podfolderach z 20% tolerancją błędów ortograficznych.
// Rozmyte wyszukiwanie wielu plików w wielu folderach przy użyciu języka C#
// Utworzenie folderu indeksu i dodanie do niego folderu dokumentu
Index index = new Index("indexing-folder-path");
index.Add("path/parent-folder");
SearchOptions options = new SearchOptions();
options.FuzzySearch.Enabled = true; // Enabling the fuzzy search
options.FuzzySearch.FuzzyAlgorithm = new SimilarityLevel(0.8);
string query = "nulla"; // search approximate matches of the provided query  
SearchResult result = index.Search(query, options);
Tutaj poziom podobieństwa jest ustawiony na 0,8, tj. 80% dopasowania, co odpowiada 20% tolerancji błędu. Możesz dostosować poziom tolerancji, poprawiając poziom podobieństwa w kodzie.
Poniżej znajdują się wyniki wyszukiwania rozmytego, które można uzyskać z powyższego kodu. Jest to dość proste, jednakże kod wydruku dostępny jest również w dalszej części tego artykułu.
Query: nulla
 Documents: 2
 Occurrences: 135
     Document: Lorem ipsum.docx
     Occurrences: 132
         Field: content
         Occurrences: 132
             nulla               98
             nullam              34
     Document: EnglishText.txt
     Occurrences: 3
         Field: content
         Occurrences: 3
             dull                1
             full                1
             fully               1
Drukowanie wyników wyszukiwania
Poniższy kod C# udostępnia dwa sposoby prezentowania wyników wyszukiwania.
- Podświetl wszystkie przybliżone dopasowania.
- Wydrukuj wyniki w czytelnym i możliwym do analizy formacie
// Zaznacz i wydrukuj wyniki wyszukiwania dla wszystkich dokumentów przy użyciu języka C#
for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);
    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, indexFolder + "/Highlight" + i + ".html");
    Highlighter highlighter = new DocumentHighlighter(outputAdapter); 
    index.Highlight(document, highlighter);
    Console.WriteLine("\tDocument: " + document.DocumentInfo.FilePath);
    Console.WriteLine("\tOccurrences: " + document.OccurrenceCount);
    for (int j = 0; j < document.FoundFields.Length; j++)
    {
        FoundDocumentField field = document.FoundFields[j];
        Console.WriteLine("\t\tField: " + field.FieldName);
        Console.WriteLine("\t\tOccurrences: " + document.OccurrenceCount);
        // Drukuję znalezione terminy
        if (field.Terms != null)
        {
            for (int k = 0; k < field.Terms.Length; k++)
            {
                Console.WriteLine("\t\t\t" + field.Terms[k].PadRight(20) + field.TermsOccurrences[k]);
            }
        }
    }
    Console.WriteLine("===========================================");
}
Uzyskanie bezpłatnej licencji lub bezpłatnej wersji próbnej
Darmowa licencja
Uzyskaj [licencję tymczasową] za darmo, 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 przyjrzeliśmy się programowemu podejściu C# do magii wyszukiwania rozmytego, aby znaleźć wszystkie przybliżone pasujące słowa, ale z pewnym stopniem tolerancji błędów. Ta funkcja sprawia, że wyszukiwanie rozmyte skutecznie uwzględnia regionalne różnice językowe, takie jak różnice między brytyjskim i amerykańskim angielskim, literówki w tekście, odmiany nazw i dopasowanie fonetyczne.
Aby uzyskać szczegółowe informacje na temat interfejsu API, czytelnikom zaleca się zapoznanie z dokumentacją.
Wszelkie pytania lub dodatkowe dyskusje można kierować na forum.