Yakın zamanda herhangi bir kelimenin tüm eşanlamlılarının nasıl elde edileceğini tartıştık. Bu eşanlamlıları birçok farklı belgede bulabilirsek harika olur. Bu yazıda, herhangi bir kelimeyi ve eşanlamlılarını Java kullanarak birden çok dosyada nasıl arayacağımızı göreceğiz.

Aşağıda ele alınan konular şunlardır:

Java API - Birden Fazla Dosyada Eşanlamlı Arayın

GroupDocs.Search, Java API’sini gösterir GroupDocs.Search for Java. Belirtilen klasördeki çeşitli birden çok dosyada sözcüklerin ve eş anlamlılarının aranmasına olanak tanır. Farklı dosya biçimlerinden oluşan uzun bir listeyi destekler ve çeşitli arama teknikleri Bu özelliklerden bazıları aşağıda belirtilmiştir ve hedefinize ulaşmak için bunları birlikte kullanabilirsiniz:

  • Boole Araması
  • Büyük/Küçük Harfe Duyarlı Arama
  • Arama Sonuçlarını Vurgula
  • Eş sesli arama
  • Cümle Arama
  • Normal İfade Araması
  • Parçalara Göre Ara
  • Eş anlamlı Arama

İndirin veya Yapılandırın

JAR dosyasını indirilenler bölümünden indirebilir veya maven tabanlı Java uygulamalarınızın pom.xml dosyası için en son depo ve bağımlılık yapılandırmalarını edinebilirsiniz.

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-search</artifactId>
        <version>21.8</version> 
</dependency>

Java Kullanarak Birden Çok Dosyada Eş Anlamlı Bul

Hızlı bir şekilde dosyalarda eşanlamlı aramaya geçelim. Aşağıdaki adımlar, Java kullanılarak bir klasör içindeki dosyalarda eşanlamlıların (benzer anlamlara sahip sözcükler) nasıl aranacağını gösterir:

  • Dizin klasörünü, belgenin klasörünü ve sorguyu (aranacak kelime) tanımlayın.
  • Index sınıfını kullanarak tanımlı dizin klasörünü kullanarak bir dizin oluşturun.
  • Belgelerin klasörünü dizine ekleyin.
  • SearchOptions kullanarak Eş Anlamlı Aramayı etkinleştirin.
  • Index sınıfının search yöntemini çağırın ve sorguyu arama seçenekleriyle iletin.
  • Alınan SearchResult sınıfının özelliklerini kullanarak özeti yazdırın.

Aşağıdaki kaynak kodu, Java kullanarak dosyalar içindeki tüm eşanlamlıların nasıl bulunacağını gösterir:

// Java kullanarak birden çok dosya ve klasörde eşanlamlı arama yapın
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "make";

// Belirtilen klasörde bir dizin oluşturma
Index index = new Index(indexFolder);
index.add(documentsFolder);

// Arama seçenekleri nesnesi oluşturma
SearchOptions options = new SearchOptions();
options.setUseSynonymSearch(true); // Enable Synonym Search

// 'Yapmak' kelimesini arayın
// 'Yap' kelimesinin yanı sıra 'yap, al, sahip ol, ...' eşanlamlıları da aranacaktır.
SearchResult result = index.search(query, options);

System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Synonym Occurrences: " + result.getOccurrenceCount());

Yukarıdaki kodun çıktısı aşağıdadır:

Query: **make**
Documents: 3
Word & Synonym Occurrences: 44 

Yukarıdaki adımda elde edilen arama sonuçlarından, aramanın her bir kelimesi ve eş anlamlısı ile ilgili bilgileri alabilirsiniz. Aşağıdaki adımlar, tüm eşanlamlıları ve bunların her bir belgedeki tekrar sayılarını aldıktan sonra sonuçları ayrıntılı olarak sunar:

  • İlk olarak, SearchResult‘ü elde etmek için arama yapın.
  • Her FoundDocument ile çalışmak için arama sonucunu çaprazlayın.
  • Her FoundDocument’in ilgili özelliklerini yazdırın.
  • Şimdi, her bir FoundDocument içindeki FoundDocumentField öğesini ayıklayın ve ardından geçiş yapın.
  • Her FoundDocumentField kendi terimlerine, oluşumlarına ve diğer özelliklerine sahiptir. İlgili alıcıyı kullanın.

Aşağıdaki kaynak kodu, eşanlamlı aramanın sonucunu Java’da aranan her terimin tekrar sayısıyla birlikte görüntüler.

// Java'da Eşanlamlı Arama sonuçlarını yazdırma
System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Synonym Occurrences: " + result.getOccurrenceCount());

for (int i = 0; i < result.getDocumentCount(); i++) {
    FoundDocument document = result.getFoundDocument(i);
    System.out.println("Document: " + document.getDocumentInfo().getFilePath());
    System.out.println("Occurrences: " + document.getOccurrenceCount());

  for (FoundDocumentField field : document.getFoundFields()) {
        System.out.println("\tField: " + field.getFieldName());
        System.out.println("\tOccurrences: " + document.getOccurrenceCount());
  
        // Bulunan terimleri yazdırma
        if (field.getTerms() != null) {
            for (int k = 0; k < field.getTerms().length; k++) {
                System.out.println("\t\t" + field.getTerms()[k] + "\t - \t" + field.getTermsOccurrences()[k]);
            }
        }
    }
}

Yukarıdaki kodun çıktısı aşağıdadır:

Query: **make**
Documents: 2
Total occurrences: 22

Document: C:/documents/sample.docx
Occurrences: 13
    Field: content
    Occurrences: 13
        **make**  -  2
        **have**  -  1
        **get**  -  2
        **do**  -  8
- - - - - - - - - - - - - - - - 
Document: C:/documents/sample.txt
Occurrences: 11
    Field: content
    Occurrences: 11
        **make**  -  1
        **have**  -  2
        **get**  -  1
        **do**  -  7
- - - - - - - - - - - - - - - - 
Document: C:/documents/sample.pdf
Occurrences: 20
    Field: content
    Occurrences: 20
        **make**  -  2
        **have**  -  2
        **get**  -  2
        **do**  -  14 

Java’da Eşanlamlı Arama ve Sonuçları Yazdırma – Tam Kod

Yukarıdaki iki adımı birleştirelim, işte tam kaynak kodu. İlk olarak, sağlanan sorguya göre tüm eşanlamlıları bulur. Ardından, Java’daki her belgedeki her eş anlamlının tüm oluşumlarını yazdırır.

// Java kullanarak birden çok dosya ve klasörde eşanlamlı arama yapın
String indexFolder = "path/indexFolder";
String documentsFolder = "path/documentsFolder";
String query = "make";

// Belirtilen klasörde bir dizin oluşturma
Index index = new Index(indexFolder);
index.add(documentsFolder);

// Arama seçenekleri nesnesi oluşturma
SearchOptions options = new SearchOptions();
options.setUseSynonymSearch(true); // Enable Synonym Search

// 'Yapmak' kelimesini arayın
// 'Yap' kelimesinin yanı sıra 'yap, al, sahip ol, ...' eşanlamlıları da aranacaktır.
SearchResult result = index.search(query, options);

System.out.println("Query: " + query);
System.out.println("Documents: " + result.getDocumentCount());
System.out.println("Word & Synonym Occurrences: " + result.getOccurrenceCount());

for (int i = 0; i < result.getDocumentCount(); i++) {
    FoundDocument document = result.getFoundDocument(i);
    System.out.println("Document: " + document.getDocumentInfo().getFilePath());
    System.out.println("Occurrences: " + document.getOccurrenceCount());

  for (FoundDocumentField field : document.getFoundFields()) {
        System.out.println("\tField: " + field.getFieldName());
        System.out.println("\tOccurrences: " + document.getOccurrenceCount());
  
        // Bulunan terimleri yazdırma
        if (field.getTerms() != null) {
            for (int k = 0; k < field.getTerms().length; k++) {
                System.out.println("\t\t" + field.getTerms()[k] + "\t - \t" + field.getTermsOccurrences()[k]);
            }
        }
    }
}

Ücretsiz API Lisansı Alın

API’yi değerlendirme sınırlamaları olmadan kullanmak için ücretsiz bir geçici lisans alabilirsiniz.

Çözüm

Özetlemek gerekirse, herhangi bir kelimeyi eşanlamlısıyla birlikte Java kullanarak birden çok belgede nasıl aratacağımızı tartıştık. En önemlisi, artık tıpkı GroupDocs.Search Uygulaması gibi arama yapmak için kendi Java Uygulamanızı geliştirmeyi deneyebilirsiniz.

Belgelerden Java Search Automation API hakkında daha fazla bilgi edinin. Özellikleri deneyimlemek için GitHub deposundan örnekleri deneyin. Herhangi bir sorunuz için forum aracılığıyla bize ulaşmaktan çekinmeyin.

Ayrıca bakınız