C# .NET kullanarak Bulanık Arama
  • Belgede hangi rengin veya renk yazımının kullanıldığını bilmiyorsunuz.
  • “John” aranıyor ancak “Jon” veya belki “Jhon” olarak yazılmış olabilir.
  • Kullanıcı “ABD” girişini yaptığında “ABD”yi bulma.
  • Aradığınız kelime veya cümlede “yanlışlık” olabilir, ah, yine bir “hata”.

İşte Bulanık Arama geliyor. Bulanık arama, verilerdeki tam eşleşmeler yerine yaklaşık eşleşmeleri bulmanızı sağlayarak arama sorgularında esneklik sağlar. Bu özellikle yazım hataları, hatalı yazımlar veya verilerde varyasyonların olduğu senaryolarda kullanışlıdır. Bu makalede, C# kullanılarak klasörler arasında birden çok belgede programlı olarak bulanık aramanın nasıl gerçekleştirileceği gösterilmektedir.

C# Bulanık Arama Kitaplığı

Bulanık Arama için GroupDocs.Search for .NET API’sini kullanacağız. Bu, yazımda belirli bir dereceye kadar toleransa izin vererek, İngiliz ve Amerikan İngilizcesi arasındaki gibi bölgesel dil farklılıklarına uyum sağlamada etkili olmasını sağlar.

Bu kütüphane bize, Word belgeleri (DOC, DOCX), elektronik tablolar (XLS, XLSX), sunumlar (PPT, PPTX), PDF dosyaları, İşaretleme (HTML, XML) gibi çok çeşitli dosya formatlarındaki metinleri programlı olarak arama gücü verir. Markdown (MD), e-Kitaplar (EPUB, CHM, FB2), e-posta mesajları (MSG, EML), OneNote belgeleri ve ZIP arşivleri.

Çalışabileceğiniz tüm dosya türlerini öğrenmek için belgelere bakın.

İndirme bölümünden DLL’leri veya MSI yükleyicisini almayı veya NuGet kullanarak API’yi .NET programınıza eklemeyi seçebilirsiniz.

C# kullanarak Dosyalarda Bulanık Arama Yapalım

C# kullanarak klasörler içindeki çeşitli dosya formatlarındaki birden çok dosyada bulanık arama gerçekleştirmek için şu adımları izleyin:

  • Bir klasör yolu sağlayarak bir Dizin oluşturun.
  • Arama dizininin ana klasör yolunu oluşturulan dizine ekleyin.
  • Arama sorgusunu tanımlayın.
  • Seçeneği etkinleştirerek Bulanık Aramayı etkinleştirin.
  • Bulanık Algoritmada Benzerlik Düzeyini gerektiği gibi ayarlayın.
  • Arama sonuçlarını almak için Arama yöntemini kullanarak aramayı yürütün.
  • Artık çıktıyı istediğiniz gibi oluşturmak veya yazdırmak için AramaSonuçları’nı yineleyebilirsiniz.

Aşağıda belirtilen C# kodundaki bulanık arama, yazımda %20 hata toleransı ile tüm alt klasörlerdeki tüm dosyalarda verilen sorgunun yaklaşık eşleşmelerini bulur.

// Bulanık C# kullanarak birden fazla klasörde birden fazla dosya arayın

// Bir dizin klasörü oluşturma ve belgenin klasörünü buna ekleme
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);

Burada benzerlik düzeyi 0,8 olarak ayarlanmıştır, yani %80 eşleşme, bu da %20 hata toleransına karşılık gelir. Koddaki benzerlik düzeyini değiştirerek tolerans düzeyini ayarlayabilirsiniz.

Yukarıdaki koddan elde edebileceğiniz bulanık arama sonuçları aşağıdadır. Oldukça basittir, ancak yazdırma kodunu bu makalenin ilerleyen kısımlarında da bulabilirsiniz.

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

Arama Sonuçlarını Yazdırma

Aşağıdaki C# kodu, arama sonuçlarınızı sunmanın iki yolunu sağlar.

  • Tüm yaklaşık eşleşmeleri vurgulayın.
  • Sonuçları okunabilir ve analiz edilebilir bir formatta yazdırın
// C# kullanarak tüm belgeler için Arama Sonuçlarını Vurgulayın ve Yazdırın
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);
        // Bulunan terimleri yazdırma
        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("===========================================");
}

Ücretsiz Lisans veya Ücretsiz Deneme Alma

Ücretsiz lisans

Bu kitaplığı kısıtlama olmadan keşfetmek için ücretsiz olarak geçici lisans edinin.

Ücretsiz deneme

İndirilenler bölümünden ücretsiz deneme sürümünü indirebilirsiniz.

Dosya ve Klasörler İçinde Arama Yapmak için .NET API

Çözüm

Bu makalede, yaklaşık olarak eşleşen tüm kelimeleri belirli bir düzeyde hata toleransıyla bulmak için Bulanık aramanın büyüsüne yönelik C# programlı yaklaşımını inceledik. Bu özellik, bulanık aramayı İngiliz ve Amerikan İngilizcesi arasındakiler gibi bölgesel dil farklılıklarını, metindeki yazım hatalarını, ad farklılıklarını ve fonetik eşleşmeyi karşılamada etkili kılar.

API hakkında kapsamlı ayrıntılar için okuyucuların belgelere başvurmaları tavsiye edilir.

Herhangi bir sorunuz veya ek tartışmanız forum‘a yönlendirilebilir.


Ayrıca bakınız