Tam metin araması, bir belge koleksiyonu içinde bir metni/sorguyu aramanın bir yoludur. Bu yaklaşım, bir terimin/deyimin tüm örneklerini hızlı bir şekilde bulur ve metin dizinlerini kullanarak çalışır. Bu yazıda, Java kullanarak belgelerde tam metin aramayı programlı olarak nasıl yapacağımızı öğreneceğiz.

Tam Metin Arama

Bundan sonra, çeşitli arama tekniklerini uygulayabilir ve kelime işlem belgeleri, elektronik tablolar, sunumlar, HTML dosyaları, PDF dosyaları, e-Kitaplar, e-posta mesajları, ZIP arşivleri ve diğer pek çok [belge biçimi] için arama çözümünüzü oluşturabilirsiniz.

Aşağıdaki konular aşağıda ele alınmıştır:

Tam Metin Arama için Java API

GroupDocs.Search, herhangi bir üçüncü taraf araç ve yazılım bağımlılığı olmadan herhangi bir uygulamaya entegre edilebilen bir tam metin arama Java API’sı sağlar. [Geniş bir belge biçimi listesi üzerinde arama yapmanızı] sağlar]8. API kullanılarak gerçekleştirilebilecek arama tekniklerinden bazıları şunlardır:

  • Büyük/Küçük Harfe Duyarlı Arama
  • Normal İfade Araması
  • Yönlü Arama
  • Bulanık Arama
  • Eş sesli arama
  • 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.3</version> 
</dependency>

Bir klasörde saklanan dosyalar içinde arama yapmak için iki adım vardır.

  • indeksleme
  • Arama Yap

Java kullanarak dosyaları dizinle

Bir dizin, tüm belgelerin taranmış metnine sahiptir. Bu nedenle bir arama işlemi yapacağınız zaman orijinal dokümanların metinleri yerine sadece dizine başvurulur. Aynı veya farklı dosya formatlarına sahip binlerce doküman arasında anında arama yapabilmek için bir indeks oluşturmanız ve bu dokümanları bu indekse eklemeniz gerekmektedir. Belgeler dizine eklendiğinde, dizin arama sorgularını işlemeye hazırdır.

Aşağıdaki basit iki satır bir dizin oluşturur ve ayrıca belgeler klasörünü dizine ekler.

Index index = new Index("indexingFolderPath");
index.add("documentsFolderPath");

(Word, PDF, Excel ve HTML) gibi aynı veya farklı formatlardaki birden fazla belgeyi indeksledikten sonra, bunların üzerinden belirli bir arama sorgusu (“Çizim” arama terimi) işlemeye devam edebiliriz. Aşağıda, Java kullanarak bir klasördeki birden çok belgede metin aramanın nasıl gerçekleştirileceğine ilişkin adımlar yer almaktadır:

  • Belgelerin kaynak klasörünü ve dizin klasörünü belirtin.
  • İndeks klasörünü kullanarak Index oluşturun.
  • Kaynak klasörü dizine ekleyin.
  • Sorgu dizesini hazırlayın.
  • Index sınıfının search yöntemini kullanarak bir arama yapın.
  • Her belgenin özellikleri için her arama sonucunu çaprazlayın.

Aşağıdaki kaynak kodu, sağlanan klasörün tüm belgelerinde Java’da metin araması gerçekleştirir.

// Belirtilen metni Java kullanarak bir klasörde birden fazla PDF, Word, Excel, HTML belgesinde arayın
Index index = new Index("path/indexingFolder");
index.add("path/documentsFolderPath");

// Belirtilen metin için dizinde arama
SearchResult result = index.search("Draw");

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

Belirtilen klasöre sahip tüm belgelerde belge yolunu ve arama terimlerinin oluşum sayısını alacağız. İşte görselleştirme için ekran görüntüsü.

Tam Arama Metin Çıktısı

Java’da Metin Arama Sonuçlarını Vurgulayın

Şimdi aynı tam metin aramasını yapalım ve ayrıca sorgunuzla eşleşen tüm oluşumları vurgulayalım.

Aşağıdaki adımlar, metin arama sonuçlarının nasıl vurgulanacağını gösterir:

  • Dizin oluşturun ve belgeler klasörünü dizine ekleyin.
  • Sorgu dizesini hazırlayın.
  • arama yöntemini kullanarak belge klasörünü arayın.
  • Sonuçlar arasında gezinirken, HtmlHighlighter kullanarak vurgulayıcıyı oluşturun.
  • Arama sonuçlarını vurgulamak için vurgulama yöntemini kullanın.

Aşağıdaki kod, Java kullanarak vurgulanan arama sonuçlarıyla HTML çıktısını oluşturur.

// Java'daki bir klasördeki birden çok belgenin tam metin arama sonuçlarını vurgulayın
Index index = new Index("path/indexingFolder");
index.add("path/documentsFolderPath"); // Synchronous indexing documents from the specified folder

String query = "draw"; // Specify a search query
SearchResult result = index.search(query); // Searching in the index

for (int i = 0; i < result.getDocumentCount(); i++) 
{
    FoundDocument document = result.getFoundDocument(i);

    String path = "path/Highlighted-"+ i +".html";
    OutputAdapter outputAdapter = new FileOutputAdapter(path); 
    HtmlHighlighter highlighter = new HtmlHighlighter(outputAdapter); // Creating the highlighter
    index.highlight(document, highlighter); // Generates HTML formatted output document with highlighted search results
}

Çıktı olarak, birden fazla HTML dosyası alacağız. Her dosya, vurgulanmış arama terimleri/kelimeleriyle ayrı bir belgenin içeriğini (örn. excel.xlsx, source.docx, target.docx) gösterecektir. Aşağıda, yukarıdaki kod kullanılarak elde edilen bir DOCX dosyası, TXT dosyası ve PDF dosyasının vurgulanmış HTML çıktısı verilmiştir.

Java kullanarak içerikte tam metin arama sonuçlarını vurgulayın

Ücretsiz API Lisansı Alın

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

Çözüm

Bu makalede, Java’daki bir klasörün birden çok belgesinde metin aramayı öğrendik. Ayrıca, GroupDocs.Search for Java kullanarak MS Word dosyaları, TXT dosyaları ve PDF dosyaları için arama sonuçları metninin HTML biçiminde programlı olarak nasıl vurgulanacağını tartıştık.

Belgeleme kullanarak API hakkında daha fazla bilgi edinebilirsiniz. GitHub adresinde daha birçok örnek mevcuttur. Sorularınız için forum aracılığıyla bize ulaşın.

Ayrıca bakınız