Java kullanarak Bulanık Arama

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:

  1. Dosyalarınızın bulunduğu klasörü kullanarak bir Dizin oluşturarak başlayın.
  2. Ana klasör yolunu dizine ekleyin.
  3. Aramak istediğiniz arama sorgusunu sağlayın.
  4. Küçük hataları anlaması için Bulanık Arama’nın büyüsünü açın.
  5. Bulanık Algoritmada Benzerlik Düzeyini ayarlayın.
  6. Arama sonuçlarını almak için arama yöntemini kullanarak aramayı yürütün.
  7. 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.

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

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


Ayrıca bakınız