Özellik ile arama java ve GroupDocs.Search rehberi
Modern belge‑odaklı uygulamalarda dosyaları yalnızca metin içeriğine göre değil, aynı zamanda departman, gizlilik seviyesi veya oluşturulma tarihi gibi özel meta verilerine göre de bulmanız gerekir. Search by attribute java, bu yeteneği tek bir yüksek performanslı sorguda sağlar. Bu öğreticide, zaten indekslenmiş dosyalarda toplu olarak öznitelikleri nasıl güncelleyeceğinizi, indeksleme sırasında öznitelikleri nasıl ekleyeceğinizi ve GroupDocs.Search for Java kütüphanesini kullanarak meta verilerle belgeleri nasıl verimli bir şekilde sorgulayacağınızı göreceksiniz.
Hızlı yanıtlar
- “search by attribute java” nedir? Her indekslenmiş belgeye eklenen anahtar‑değer meta verileriyle arama sonuçlarını filtrelemenizi sağlar.
- İndekslemeden sonra öznitelikleri değiştirebilir miyim? Evet – tüm indeksi yeniden oluşturmak zorunda kalmadan toplu değişiklikler uygulamak için
AttributeChangeBatchkullanın. - İndeksleme sırasında öznitelikleri nasıl eklerim?
FileIndexingolayı için bir işleyici kaydedin ve her dosya için programlı olarak öznitelikleri ayarlayın. - Lisans gerekiyor mu? Değerlendirme için ücretsiz deneme çalışır; üretim dağıtımları için kalıcı bir lisans gereklidir.
- Hangi Java sürümü gerekiyor? Java 8 veya üzeri önerilir.
“search by attribute java” nedir?
Search by attribute java, belgeleri yalnızca metin içeriğine göre değil, özel meta verilerine (özniteliklere) göre sorgulamanızı sağlar. Bu yaklaşım sonuç kümelerini büyük ölçüde daraltır, ağ trafiğini azaltır ve yanıt sürelerini hızlandırır çünkü motor, tam metin taramasına başlamadan önce öznitelik filtrelerini değerlendirir.
Dinamik meta veri etiketleme neden kullanılmalı?
Dinamik meta veri etiketleme, belgeler için yeniden indeksleme yapmadan özel öznitelikler atamanıza, güncellemenize ve yönetmenize olanak tanır; değişen iş kurallarına uyum sağlayan esnek sınıflandırma, arama verimliliğini artırır ve büyük depolarda maliyetli veri göçlerine olan ihtiyacı azaltırken uyumluluk ve denetlenebilirliği korur.
- Dinamik sınıflandırma – meta verileri gelişen iş kurallarıyla senkronize tutar.
- Daha hızlı filtreleme – öznitelik filtreleri tam metin aramadan önce değerlendirilir, yanıt sürelerini artırır.
- Uyumluluk takibi – belgeleri saklama politikaları veya denetim gereksinimleri için etiketler.
- Toplu öznitelik güncelleme – her şeyi yeniden indekslemeden bir işlemde birçok belgeyi değiştirir.
Önkoşullar
- Java 8+ (JDK 8 veya daha yeni)
- GroupDocs.Search for Java kütüphanesi (aşağıdaki Maven kurulumuna bakın)
- Java koleksiyonları ve istisna yönetimi konusunda temel bilgi
GroupDocs.Search for Java kurulumu
Maven kurulumu
GroupDocs deposunu ve bağımlılığı pom.xml dosyanıza ekleyin:
<repositories>
<repository>
<id>groupdocs-releases</id>
<url>https://repo.groupdocs.com/maven</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-search</artifactId>
<version>25.4</version>
</dependency>
</dependencies>
Doğrudan indirme
Alternatif olarak, en son sürümü GroupDocs.Search for Java releases adresinden indirin. Maven kullanmak istemiyorsanız, JAR dosyasını GroupDocs web sitesinden alın.
Lisans edinme
- Özellikleri keşfetmek için ücretsiz deneme ile başlayın.
- Uzun vadeli kullanım için, geçici veya tam lisansı lisans sayfasından edinin.
Temel başlatma
// Initialize the search index folder
String indexFolder = "C:/search_index";
Index index = new Index(indexFolder);
// Apply license if you have one
License license = new License();
license.setLicense("C:/licenses/groupdocs.lic");
Belge özniteliklerini nasıl değiştirilir (toplu güncelleme)
Belge özniteliklerini indekslendikten sonra değiştirmek için AttributeChangeBatch API’sını kullanarak toplu güncellemeler uygulayabilirsiniz. Bu yaklaşım, seçilen dosyaların meta verilerini tek bir işlemde günceller, tüm koleksiyonun yeniden indekslenmesi yükünden kaçınır ve tam metin indeksini korur.
Doğrudan cevap: AttributeChangeBatch kullanarak meta veri eklemelerini, silmelerini veya değişikliklerini tek bir atomik işlemde gruplayın, ardından toplu işlemi indekse gönderin. Bu, mevcut tam metin indeksini korurken birçok belgenin özniteliklerini tek seferde günceller.
Adım 1: belgeleri indekse ekle
index.add("C:/docs/contract1.pdf");
index.add("C:/docs/report2.docx");
Adım 2: indekslenmiş belge bilgilerini al
DocumentInfo info = index.getDocumentInfo("contract1.pdf");
System.out.println("Current attributes: " + info.getAttributes());
Adım 3: belge özniteliklerini toplu güncelle
AttributeChangeBatch sınıfı, birden fazla öznitelik değişikliğini tek bir atomik işlemde birleştirir, I/O yükünü azaltır ve indeks tutarlılığını sağlar.
AttributeChangeBatch batch = new AttributeChangeBatch();
batch.addAttribute("contract1.pdf", "department", "Legal");
batch.removeAttribute("report2.docx", "confidential");
batch.replaceAttribute("report2.docx", "status", "archived", "active");
index.applyAttributeChanges(batch);
Adım 4: öznitelik filtreleriyle ara
SearchOptions options = new SearchOptions();
options.addAttributeFilter("department", "Legal");
SearchResult result = index.search("agreement", options);
System.out.println("Found " + result.getCount() + " legal documents.");
İndeksleme sırasında öznitelikler nasıl eklenir
İndeksleme sürecinde öznitelik eklemek, her belgenin baştan gerekli meta verilerle zenginleştirilmesini sağlar. FileIndexing olayını ele alarak, motor dosyayı işlemeye başlamadan önce her DocumentInfo nesnesine programlı olarak anahtar‑değer çiftleri ekleyebilir ve sonraki aramalarda tutarlı öznitelik kullanılabilirliğini garanti edersiniz.
Doğrudan cevap: Dosyaları eklemeden önce FileIndexing olayına abone olun; olay işleyicisinde DocumentInfo nesnesinde addAttribute metodunu çağırarak anahtar‑değer çiftlerini ekleyin, ardından indeksin dosyayı işlemeye devam etmesine izin verin.
Adım 1: FileIndexing olayına abone ol
FileIndexing olayı, her dosya indekse eklendiğinde tetiklenir ve özel meta veri eklemenize olanak tanır.
index.getEvents().FileIndexing.add(event -> {
// Example: set department based on folder name
String folder = new File(event.getFilePath()).getParentFile().getName();
event.getDocumentInfo().addAttribute("department", folder);
});
Adım 2: belgeleri indeksle
index.add("C:/incoming/hr/policy.pdf");
index.add("C:/incoming/finance/budget.xlsx");
Pratik uygulamalar
- Belge yönetim sistemleri – dosyaları alım sırasında otomatik olarak etiketler, anlık facet gezinmesini sağlar.
- Büyük içerik arşivleri – çok gigabaytlık koleksiyonlarda sorgu süresini dakikalardan saniyelere düşürmek için öznitelik filtrelerini tam metin aramayla birleştirir.
- Uyumluluk ve raporlama – düzenleyici kontroller için sorgulanabilir saklama süreleri, gizlilik seviyeleri veya denetim işaretleri gibi dinamik olarak atar.
Performans değerlendirmeleri
- Bellek yönetimi – JVM yığınını izleyin ve
-Xmxayarını (örneğin, 2 GB’den büyük indeksler için-Xmx4g) optimize edin. - Toplu işleme – disk yazmalarını azaltmak için öznitelik değişikliklerini
AttributeChangeBatchile gruplayın; işlem zaman aşımını önlemek için 10 000’den fazla değişikliği içeren topluları bölün. - Kütüphane güncellemeleri – en son GroupDocs.Search sürümünü kullanın; 25.4 sürümü, 24.x’e kıyasla öznitelik‑filtre değerlendirmesinde %30 hız artışı sağlar.
Yaygın sorunlar ve çözümler
| Sorun | Neden olur | Nasıl düzeltilir |
|---|---|---|
| Öznitelikler uygulanmadı | Olay işleyicisi indekslemeden önce kaydedilmemiş | index.getEvents().FileIndexing.add(...) kodunun herhangi bir index.add(...) çağrısından önce çalıştığından emin olun. |
| Arama sonuç döndürmüyor | Öznitelik adı eşleşmiyor (büyük/küçük harf duyarlı) | Filtre oluştururken tam öznitelik adlarını kullanın (createAttribute("main")). |
| Büyük toplularda bellek yetersizliği hataları | Tek bir toplu işlemde çok fazla değişiklik | Büyük güncellemeleri daha küçük AttributeChangeBatch örneklerine bölün (örneğin, toplu başına 5 000 belge). |
| Lisans tanınmıyor | Lisans dosyası uygulanmadan deneme JAR kullanılması | Herhangi bir indeks işlemi öncesinde License license = new License(); license.setLicense("path/to/license.file"); kodunu çalıştırın. |
Sıkça sorulan sorular
S: GroupDocs.Search’i Java’da kullanmak için önkoşullar nelerdir?
C: Java 8+, GroupDocs.Search kütüphanesi ve indeksleme kavramları hakkında temel bilgi.
S: GroupDocs.Search’i Maven üzerinden nasıl kurarım?
C: Maven kurulum bölümünde gösterilen depo ve bağımlılığı pom.xml dosyanıza ekleyin.
S: Belgeler indekslendikten sonra öznitelikleri değiştirebilir miyim?
C: Evet, AttributeChangeBatch kullanarak belge özniteliklerini yeniden indekslemeden toplu olarak güncelleyebilirsiniz.
S: İndeksleme sürecim yavaşsa ne yapmalıyım?
C: JVM belleğini (-Xmx) optimize edin, toplu güncellemeler kullanın ve performans iyileştirmeleri için en son kütüphane sürümüne yükseltin.
S: GroupDocs.Search for Java hakkında daha fazla kaynağa nereden ulaşabilirim?
C: Resmi belgeleri ziyaret edin veya topluluk forumlarını inceleyin.
Kaynaklar
- Dokümantasyon: GroupDocs.Search for Java Docs
- API referansı: API Reference
- En son sürümler: Latest Releases
- GitHub GroupDocs.Search: GitHub GroupDocs.Search
- Ücretsiz destek forumu: GroupDocs Forums
- Geçici lisans sayfası: License Page
Son Güncelleme: 2026-09-21
Test Edilen Sürüm: GroupDocs.Search 25.4 for Java
Yazar: GroupDocs
<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>
import com.groupdocs.search.Index;
// Initialize an index in a specified directory
Index index = new Index("YOUR_OUTPUT_DIRECTORY/ChangeAttributes");
index.add("YOUR_DOCUMENT_DIRECTORY");
import com.groupdocs.search.results.DocumentInfo;
DocumentInfo[] documents = index.getIndexedDocuments();
import com.groupdocs.search.common.AttributeChangeBatch;
import com.groupdocs.search.SearchOptions;
AttributeChangeBatch batch = new AttributeChangeBatch();
batch.addToAll("public"); // Add 'public' to all documents
batch.remove(documents[0].getFilePath(), "public"); // Remove 'public' from a specific document
batch.add(documents[0].getFilePath(), "main", "key"); // Add 'main' and 'key' attributes
// Apply changes
index.changeAttributes(batch);
import com.groupdocs.search.results.SearchResult;
SearchOptions options = new SearchOptions();
options.setSearchDocumentFilter(SearchDocumentFilter.createAttribute("main"));
String query = "length";
SearchResult result = index.search(query, options); // Perform the search
import com.groupdocs.search.events.EventHandler;
import com.groupdocs.search.events.FileIndexingEventArgs;
index.getEvents().FileIndexing.add(new EventHandler<FileIndexingEventArgs>() {
@Override
public void invoke(Object sender, FileIndexingEventArgs args) {
if (args.getDocumentFullPath().endsWith("SampleDocument.pdf")) {
args.setAttributes(new String[] { "main", "key" });
}
}
});
index.add("YOUR_DOCUMENT_DIRECTORY");