Bulanık arama, verilerinizde tam olarak aynı olmayan, benzer içerikleri bulmanıza yardımcı olur. Küçük yazım hataları, yazım yanlışları veya verilerde farklılıklar olduğunda son derece kullanışlıdır. Bu makale, klasörlerin etrafına dağılmış dosyaları bulmak için bulanık arama gerçekleştirmenin Java yöntemiyle ilgilidir.
Bulanık arama örnek içeriğini detaylandırmak için birkaç örnek:
- Belgede “renk” veya “renk” yazımının kullanılıp kullanılmadığından emin olamayabilirsiniz.
- “John” aranırken aslında “Jon” veya belki “Jhon” olarak yazılabilir.
- Birisi “ABD” yazsa bile “ABD"yi bulmaya çalışıyorum
- Eğer bir “hata” yaparsanız, durun, bu aslında bir “hatadır”.
Bu tür içerikleri bulmanın çözümü Bulanık Arama’dır.
Java Bulanık Arama Kütüphanesi
Java’da bulanık aramalar yapmak için GroupDocs.Search for Java API’sini kullanacağız. API, esneklik gösterme konusunda oldukça yeteneklidir ve özelleştirilebilir düzeyde hata toleransı sağlar. Bu özellik, İngiliz ve Amerikan İngilizcesi gibi dil farklılıkları ve yazım hataları ile uğraşırken kullanışlıdır.
Bu kütüphane ile çok çeşitli dosya formatlarında bulanık arama gerçekleştirilebilir. Destek yalnızca Word belgeleri (DOC, DOCX), elektronik tablolar (XLS, XLSX), sunumlar (PPT, PPTX), PDF’ler, İşaretleme dilleri (HTML, XML), Markdown (MD), e-Kitaplar (EPUB, CHM, FB2), e-postalar (MSG, EML), OneNote notları ve hatta ZIP arşivleri.
Bu sihrin işleyebileceği tüm dosya türlerini bilmek istiyorsanız belgelere göz atmanız yeterli.
Başlamak için, indirme bölümünden API’yi alabilir veya en son depo ve bağımlılık Maven yapılandırmalarını doğrudan Java uygulamalarınıza ekleyebilirsiniz.
Java Kullanarak Dosyalarda Bulanık Arama Yapalım
Java kullanarak klasörler içindeki çeşitli dosya formatlarındaki birden çok dosyada bulanık arama yapmak için şu adımları izleyin:
- Dosyalarınızın bulunduğu klasörü kullanarak bir Dizin oluşturarak başlayın.
- Ana klasör yolunu dizine ekleyin.
- Aramak istediğiniz arama sorgusunu sağlayın.
- Küçük hataları anlaması için Bulanık Arama’nın büyüsünü açın.
- Bulanık Algoritmada Benzerlik Düzeyini 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ı boyunca geçiş yapabilirsiniz.
Aşağıdaki Java kodunda program, tüm dosya ve alt klasörlerde istediğiniz türden benzer içeriği arar. Yazım hatalarına %25’e kadar toleranslıdır. Koda baktığınızda benzerlik düzeyinin 0,75 olarak ayarlandığını göreceksiniz, bu da %75 eşleşmeye eşdeğerdir. Aramada ince ayar yapmak istiyorsanız koddaki benzerlik düzeyini değiştirmeniz yeterlidir.
// Fuzzy Java 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("path/indexing-folder-path");
index.add("path/parent-folder");
SearchOptions options = new SearchOptions();
options.getFuzzySearch().setEnabled(true); // Enabling the fuzzy search
options.getFuzzySearch().setFuzzyAlgorithm(new SimilarityLevel(0.75));
String query = "nulla"; // search approximate matches of the provided query
SearchResult result = index.search(query, options);
Kodu çalıştırdıktan sonra, getirilen bulanık arama sonuçlarının bir listesini alacaksınız. Arama sonuçlarının nasıl yazdırılacağını görmek istiyorsanız bu makaleyi okumaya devam edin.
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 Java 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
// Java kullanarak tüm belgeler için Arama Sonuçlarını Vurgulayın ve Yazdırın
for (int i = 0 ; i < result.getDocumentCount(); i++)
{
FoundDocument document = result.getFoundDocument(i);
OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "path/Highlight" + i + ".html");
Highlighter highlighter = new DocumentHighlighter(outputAdapter);
index.highlight(document, highlighter);
System.out.println("\tDocument: " + document.getDocumentInfo().getFilePath());
System.out.println("\tOccurrences: " + document.getOccurrenceCount());
for (FoundDocumentField field : document.getFoundFields()) {
System.out.println("\t\tField: " + field.getFieldName());
System.out.println("\t\tOccurrences: " + field.getOccurrenceCount());
// Bulunan terimleri yazdırma
if (field.getTerms() != null) {
for (int k = 0; k < field.getTerms().length; k++) {
System.out.println("\t\t\t" + field.getTerms()[k] + " - " + field.getTermsOccurrences()[k]);
}
}
}
}
Ü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, Bulanık aramayı gerçekleştirmenin programlı Java yolunu araştırdık. Küçük hatalar olsa bile, birbirine benzeyen yaklaşık eşleşen kelimeleri bulmanıza yardımcı olur. Bu özellik, İngiliz ve Amerikan İngilizcesi arasındaki farklar, yazım hataları, isim değişiklikleri ve kelimelerdeki benzer seslerle başa çıkmak için kullanışlıdır.
API hakkında daha fazla bilgi için belgelere göz atın.
Sorularınız varsa veya daha fazlasını tartışmak istiyorsanız forum‘a gidin.