Geçici bir lisans kullanarak Java’da parça‑tabanlı indeksleme
Bu öğreticide geçici bir lisans kullanarak GroupDocs.Search’in parça‑tabanlı arama özelliğiyle belgelere indeks ekleyeceksiniz. Bu yaklaşım, büyük belge koleksiyonlarını—hukuki sözleşmeler, destek talepleri, araştırma makaleleri—düşük java search index memory kullanımıyla yönetmenizi ve arama performansını önemli ölçüde artırmanızı sağlar. İndeks klasörünü nasıl ayarlayacağınızı, birden fazla belge kaynağını nasıl besleyeceğinizi, parça aramayı nasıl etkinleştireceğinizi ve hem ilk hem de sonraki parça sorgularını nasıl çalıştıracağınızı göreceksiniz.
Hızlı Yanıtlar
- İlk adım nedir? Bir arama indeks klasörü oluşturun.
- Birçok dosyayı nasıl eklerim? Her belge klasörü için
index.add()kullanın. - Hangi seçenek parça aramayı etkinleştirir?
options.setChunkSearch(true). - İlk parçadan sonra aramaya devam edebilir miyim? Evet, token ile
index.searchNext()çağırın. - Lisans gerekir mi? Geliştirme için ücretsiz deneme veya geçici lisans yeterlidir; üretim için tam lisans gereklidir.
Öğrenecekleriniz
- Belirli bir klasörde arama indeksi nasıl oluşturulur.
- Belge ekleme adımları birden fazla konumdan indeks’e.
- Parça‑tabanlı aramayı etkinleştirmek için arama seçeneklerini yapılandırma.
- İlk ve sonraki parça‑tabanlı aramaları gerçekleştirme.
- Parça‑tabanlı belge aramasının öne çıktığı gerçek dünya senaryoları.
Önkoşullar
Bu kılavuzu izlemek için şunların olduğundan emin olun:
- Gerekli kütüphaneler: GroupDocs.Search for Java 25.4 ve üzeri.
- Ortam kurulumu: Uyumlu bir Java Development Kit (JDK) yüklü.
- Bilgi önkoşulları: Temel Java programlama ve Maven bilgisi.
GroupDocs.Search for Java’ı Kurma
Başlamak için, Maven kullanarak GroupDocs.Search’i projenize entegre edin:
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/search/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-search</artifactId>
<version>25.4</version>
</dependency>
</dependencies>
Alternatif olarak, en son sürümü GroupDocs.Search for Java releases adresinden indirin.
Lisans edinme
GroupDocs.Search’i denemek için:
- Ücretsiz deneme – taahhüt olmadan temel özellikleri test edin.
- Geçici lisans – geliştirme için genişletilmiş erişim.
- Satın al – üretim kullanımı için tam lisans.
Belge nasıl indeks’e eklenir?
Doğrudan cevap: Aranabilir dosyalar içeren her klasör için index.add() çağırın; yöntem klasörü özyinelemeli olarak tarar ve desteklenen her belgeyi tek bir işlemde indekse ekler. Bu, dosya‑dosya manuel işleme ihtiyacını ortadan kaldırır ve toplu alımı hızlandırır.
SearchIndex, diskteki aranabilir koleksiyonu temsil eden merkezi sınıftır. Bir kez örneklediğinizde, tüm indeksleme ve sorgu işlemleri bu nesne üzerinden gerçekleşir.
1. İndeks Oluşturma
Doğrudan cevap: İndeks dosyalarının saklanacağı yolu belirterek bir SearchIndex nesnesi oluşturun, ardından depolama yapısını başlatmak için index.create() çağırın. Bu çağrı, ilk kullanımda gerekli klasörleri ve meta veri dosyalarını oluşturur.
import com.groupdocs.search.*;
public class CreateIndex {
public static void main(String[] args) {
String indexFolder = "YOUR_DOCUMENT_DIRECTORY\\output\\AdvancedUsage\\Searching\\SearchByChunks";
// Creating an index in the specified folder
Index index = new Index(indexFolder);
}
}
2. Belgeleri indekse ekleme
Doğrudan cevap: index.add() metodunu kullanın ve her kaynak klasörün mutlak yolunu geçirin; API otomatik olarak desteklenen formatları (PDF, DOCX, XLSX, vb.) algılar ve aranabilir metni indekse çıkarır.
SearchOptions, indeksleme ve arama sırasında belgelerin nasıl işlendiğini ince ayar yapmanızı sağlayan bir yapılandırma nesnesidir. Daha sonra parça‑tabanlı sorguları etkinleştirmek için kullanacaksınız.
String indexFolder = "YOUR_DOCUMENT_DIRECTORY\\output\\AdvancedUsage\\Searching\\SearchByChunks";
Index index = new Index(indexFolder);
3. Parça arama için arama seçeneklerini yapılandırma
Doğrudan cevap: Sorguyu yürütmeden önce bir SearchOptions örneğinde options.setChunkSearch(true) ayarlayın; bu, motorun her belgeyi mantıksal parçalara (genellikle paragraflar) bölmesini ve tüm dosya yerine parça başına eşleşmeler döndürmesini sağlar.
SearchResult, eşleşen parçaları, konumlarını ve alaka skorlarını tutar. Parça arama etkin olduğunda, her SearchResult orijinal belgenin tek bir fragmentine karşılık gelir.
String documentsFolder1 = "YOUR_DOCUMENT_DIRECTORY";
String documentsFolder2 = "YOUR_DOCUMENT_DIRECTORY";
String documentsFolder3 = "YOUR_DOCUMENT_DIRECTORY";
index.add(documentsFolder1);
index.add(documentsFolder2);
index.add(documentsFolder3);
4. İlk parça‑tabanlı aramayı gerçekleştirme
Doğrudan cevap: index.search("your query", options) çalıştırın; bu çağrı, eşleşen ilk parça seti için bir SearchResult koleksiyonu ve devamı için arama durumunu temsil eden bir token döndürür.
Döndürülen token, tüm sorguyu yeniden çalıştırmadan büyük sonuç kümelerinde sayfalama yapmak için gereklidir.
SearchOptions options = new SearchOptions();
options.setChunkSearch(true);
5. Parça‑tabanlı aramayı sürdürme
Doğrudan cevap: Önceki çağrıdan dönen token’ı index.searchNext(token, options) metoduna geçirin; metod null döndürene kadar tekrarlayın, bu tüm eşleşen parçaların alındığını gösterir.
Bu artımlı yaklaşım, yalnızca mevcut parça topluluğu bellekte bulunduğu için bellek kullanımını düşük tutar.
String query = "invitation";
SearchResult result = index.search(query, options);
Neden parça‑tabanlı arama kullanılmalı?
Parça‑tabanlı arama, büyük belge koleksiyonlarını yönetilebilir parçalara ayırır, bellek baskısını azaltır ve yanıt sürelerini hızlandırır. Paragraf veya bölüm seviyesinde indeksleyerek, motor yalnızca ilgili fragmentleri getirir, bu da CPU kullanımını düşürür ve son kullanıcı gecikmesini iyileştirir. Özellikle şu durumlarda faydalıdır:
- Hukuk ekipleri, binlerce sözleşme içinde belirli maddeleri bulmak zorundadır.
- Müşteri destek portalları, ilgili bilgi tabanı makalelerini anında göstermelidir.
- Araştırmacılar, tüm dosyaları belleğe yüklemeden geniş veri setlerini süzer.
Sayısal iddia: GroupDocs.Search, standart 8‑çekirdekli bir sunucuda 500‑sayfa üzerindeki PDF’leri parça başına 2 saniyenin altında işleyebilir ve en yüksek yığını 200 MB altında tutar.
Bu yaklaşım arama performansını nasıl artırır
Doğrudan cevap: Tüm dosyalar yerine daha küçük parçalar aranarak, motor alakasız bölümleri erken atlayabilir, CPU döngülerini azaltabilir ve yalnızca aktif parçayı bellekte tutar; bu doğrudan java search index memory tüketimini düşürür ve daha hızlı yanıt süreleri sağlar. Bu hedefli yaklaşım, daha etkili önbellekleme ve paralel işleme de olanak tanır; birden fazla çekirdek aynı anda farklı parçaları işleyebilir, bu da çok‑çekirdekli sunucularda verimliliği daha da artırır.
Ek faydalar şunlardır:
- Birden fazla çekirdek üzerinde paralel parça işleme.
- Yüksek alaka eşleşmesi bulunduğunda erken sonlandırma.
java search index memory yönetimi
Doğrudan cevap: Beklenen indeks boyutuna göre yeterli JVM yığını (ör. -Xmx2g veya daha yüksek) ayırın, toplu eklemelerden sonra index.optimize() çalıştırarak indeks yapısını sıkıştırın ve gecikme artışlarını önlemek için VisualVM ile GC duraklamalarını izleyin.
Ek ayar ipuçları:
- Büyük topluluktan sonra ara verileri diske yazmak için
index.flush()kullanın. options.setMemoryLimit(256)etkinleştirerek arama başına bellek kullanımını sınırlayın.
Performans değerlendirmeleri
- Bellek yönetimi – Büyük indeksler için yeterli yığın alanı (
-Xmx) ayırın. - Kaynak izleme – İndeksleme ve arama işlemleri sırasında CPU kullanımına göz kulak olun.
- İndeks bakımı – Eski verileri atmak için periyodik olarak indeksi yeniden oluşturun veya temizleyin.
Yaygın tuzaklar ve sorun giderme
| Sorun | Neden oluşur | Çözüm |
|---|---|---|
OutOfMemoryError indeksleme sırasında | Yığın boyutu çok düşük | JVM yığınını artırın (-Xmx2g veya daha yüksek) |
| Sonuç döndürülmedi | Parça token’ı işlenmedi | while döngüsünün getNextChunkSearchToken() null olana kadar çalıştığından emin olun |
| Yavaş arama performansı | İndeks optimize edilmemiş | Toplu eklemelerden sonra index.optimize() çalıştırın |
Sıkça Sorulan Sorular
S: Parça‑tabanlı arama nedir?
C: Parça‑tabanlı arama, veri kümesini daha küçük parçalara böler, büyük veri hacimlerinde tüm belgeleri belleğe yüklemeden verimli sorgular yapılmasını sağlar.
S: Yeni dosyalarla indeksimi nasıl güncellerim?
C: Yeni belgelerin yolunu index.add() ile çağırmanız yeterlidir; indeks otomatik olarak bunları ekleyecektir.
S: GroupDocs.Search farklı dosya formatlarını işleyebilir mi?
C: Evet, PDF, DOCX, XLSX, PPTX, HTML, TXT ve 30’dan fazla diğer format desteklenir.
S: Tipik performans darboğazları nelerdir?
C: Bellek kısıtlamaları ve optimize edilmemiş indeksler en yaygın olanlardır; yeterli yığın ayırın ve indeksi düzenli olarak optimize edin.
S: Daha ayrıntılı belgeleri nerede bulabilirim?
C: Derinlemesine kılavuzlar ve API referansları için resmi GroupDocs.Search Documentation adresini ziyaret edin.
S: Parça‑tabanlı arama şifreli PDF’lerde çalışır mı?
C: Evet, uygun API aşırı yüklemesiyle şifreyi sağladığınız sürece çalışır.
S: İndeksleme ilerlemesini nasıl izleyebilirim?
C: Index.add() aşırı yüklemesini kullanarak bir Progress nesnesi döndürün veya günlük geri çağırmalarına bağlanın.
Kaynaklar
- Dokümantasyon: GroupDocs.Search for Java Docs
- API referansı: GroupDocs.Search API Reference
- İndirme: GroupDocs.Search Releases
- GitHub: GroupDocs.Search GitHub Repository
- Ücretsiz destek: GroupDocs Forum
- Geçici lisans: Obtain a Temporary License
Son Güncelleme: 2026-10-02
Test Edilen: GroupDocs.Search 25.4 for Java
Yazar: GroupDocs
while (result.getNextChunkSearchToken() != null) {
result = index.searchNext(result.getNextChunkSearchToken());
}