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