Pencarian berdasarkan atribut java dengan panduan GroupDocs.Search
Dalam aplikasi modern yang berfokus pada dokumen, Anda sering perlu menemukan file tidak hanya berdasarkan konten teksnya tetapi juga berdasarkan metadata khusus seperti departemen, tingkat kerahasiaan, atau tanggal pembuatan. Search by attribute java memberi Anda kemampuan itu dalam satu kueri berperforma tinggi. Dalam tutorial ini Anda akan melihat cara memperbarui atribut secara batch pada file yang sudah diindeks, menyuntikkan atribut saat proses pengindeksan, dan secara efisien menanyakan dokumen berdasarkan metadata menggunakan pustaka GroupDocs.Search untuk Java.
Jawaban Cepat
- Apa itu “search by attribute java”? Ini memungkinkan Anda menyaring hasil pencarian dengan metadata kunci‑nilai yang terlampir pada setiap dokumen yang diindeks.
- Bisakah saya memodifikasi atribut setelah pengindeksan? Ya – gunakan
AttributeChangeBatchuntuk menerapkan perubahan massal tanpa membangun ulang seluruh indeks. - Bagaimana cara menambahkan atribut saat pengindeksan? Daftarkan handler untuk event
FileIndexingdan atur atribut secara programatik untuk setiap file. - Apakah saya memerlukan lisensi? Versi percobaan gratis dapat digunakan untuk evaluasi; lisensi permanen diperlukan untuk penerapan produksi.
- Versi Java apa yang diperlukan? Java 8 atau yang lebih baru disarankan.
Apa itu “search by attribute java”?
Search by attribute java memungkinkan Anda menanyakan dokumen berdasarkan metadata khusus (atribut) bukan hanya konten teksnya. Pendekatan ini secara dramatis mempersempit set hasil, mengurangi lalu lintas jaringan, dan mempercepat waktu respons karena mesin mengevaluasi filter atribut sebelum melakukan pemindaian teks penuh.
Mengapa menggunakan penandaan metadata dinamis?
Penandaan metadata dinamis memungkinkan Anda menetapkan, memperbarui, dan mengelola atribut khusus untuk dokumen tanpa melakukan pengindeksan ulang, memberikan klasifikasi fleksibel yang beradaptasi dengan aturan bisnis yang berubah, meningkatkan efisiensi pencarian, dan mengurangi kebutuhan migrasi data yang mahal pada repositori besar sambil mempertahankan kepatuhan dan auditabilitas.
- Kategorisasi dinamis – menjaga metadata tetap sinkron dengan aturan bisnis yang berkembang.
- Penyaringan lebih cepat – filter atribut dievaluasi sebelum pencarian teks penuh, meningkatkan waktu respons.
- Pelacakan kepatuhan – menandai dokumen untuk kebijakan retensi atau persyaratan audit.
- Pembaruan atribut secara batch – mengubah banyak dokumen dalam satu operasi tanpa mengindeks ulang semuanya.
Prasyarat
- Java 8+ (JDK 8 atau yang lebih baru)
- Pustaka GroupDocs.Search untuk Java (lihat pengaturan Maven di bawah)
- Familiaritas dasar dengan koleksi Java dan penanganan pengecualian
Menyiapkan GroupDocs.Search untuk Java
Pengaturan Maven
Tambahkan repositori GroupDocs dan dependensi ke pom.xml Anda:
<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>
Unduhan langsung
Sebagai alternatif, unduh versi terbaru dari GroupDocs.Search for Java releases. Jika Anda lebih memilih tidak menggunakan Maven, dapatkan JAR dari situs GroupDocs.
Akuisisi lisensi
- Mulailah dengan percobaan gratis untuk menjelajahi kemampuan.
- Untuk penggunaan jangka panjang, dapatkan lisensi sementara atau penuh melalui halaman lisensi.
Inisialisasi dasar
// 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");
Cara memodifikasi atribut dokumen (pembaruan batch)
Untuk memodifikasi atribut dokumen setelah diindeks, Anda dapat menggunakan API AttributeChangeBatch untuk menerapkan pembaruan massal. Pendekatan ini memperbarui metadata file yang dipilih dalam satu transaksi, menghindari beban kerja pengindeksan ulang seluruh koleksi dan menjaga indeks teks penuh tetap utuh.
Jawaban langsung: Gunakan AttributeChangeBatch untuk mengelompokkan penambahan, penghapusan, atau penggantian metadata menjadi satu operasi atomik, kemudian komit batch ke indeks. Ini memperbarui atribut banyak dokumen dalam satu kali proses sambil mempertahankan indeks teks penuh yang ada.
Langkah 1: tambahkan dokumen ke indeks
index.add("C:/docs/contract1.pdf");
index.add("C:/docs/report2.docx");
Langkah 2: ambil informasi dokumen yang diindeks
DocumentInfo info = index.getDocumentInfo("contract1.pdf");
System.out.println("Current attributes: " + info.getAttributes());
Langkah 3: pembaruan batch atribut dokumen
Kelas AttributeChangeBatch mengelompokkan beberapa modifikasi atribut menjadi satu operasi atomik, mengurangi beban I/O dan memastikan konsistensi indeks.
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);
Langkah 4: cari dengan filter atribut
SearchOptions options = new SearchOptions();
options.addAttributeFilter("department", "Legal");
SearchResult result = index.search("agreement", options);
System.out.println("Found " + result.getCount() + " legal documents.");
Cara menambahkan atribut selama pengindeksan
Menambahkan atribut selama proses pengindeksan memastikan setiap dokumen diperkaya dengan metadata yang diperlukan sejak awal. Dengan menangani event FileIndexing, Anda dapat secara programatik melampirkan pasangan kunci‑nilai ke setiap objek DocumentInfo sebelum mesin memproses file, menjamin ketersediaan atribut yang konsisten untuk pencarian selanjutnya.
Jawaban langsung: Langganan ke event FileIndexing sebelum menambahkan file; dalam handler event, panggil addAttribute pada objek DocumentInfo untuk melampirkan pasangan kunci‑nilai, lalu biarkan indeks melanjutkan pemrosesan file.
Langkah 1: berlangganan ke event FileIndexing
Event FileIndexing dipicu untuk setiap file saat ditambahkan ke indeks, memungkinkan Anda menyuntikkan metadata khusus.
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);
});
Langkah 2: indeks dokumen
index.add("C:/incoming/hr/policy.pdf");
index.add("C:/incoming/finance/budget.xlsx");
Aplikasi praktis
- Sistem manajemen dokumen – secara otomatis menandai file saat masuk, memungkinkan navigasi facet instan.
- Arsip konten besar – menggabungkan filter atribut dengan pencarian teks penuh untuk memotong waktu kueri dari menit menjadi detik pada koleksi multi‑gigabyte.
- Kepatuhan & pelaporan – secara dinamis menetapkan periode retensi, tingkat kerahasiaan, atau flag audit yang dapat dipertanyakan untuk pemeriksaan regulasi.
Pertimbangan kinerja
- Manajemen memori – pantau heap JVM dan sesuaikan
-Xmx(mis.,-Xmx4guntuk indeks lebih besar dari 2 GB). - Pemrosesan batch – kelompokkan perubahan atribut dengan
AttributeChangeBatchuntuk meminimalkan penulisan ke disk; bagi batch yang lebih besar dari 10 000 modifikasi untuk menghindari batas waktu transaksi. - Pembaruan pustaka – tetap gunakan rilis terbaru GroupDocs.Search; versi 25.4 menambahkan peningkatan kecepatan 30 % untuk evaluasi filter atribut dibandingkan dengan 24.x.
Masalah umum dan solusi
| Masalah | Mengapa terjadi | Cara memperbaiki |
|---|---|---|
| Atribut tidak diterapkan | Handler event tidak terdaftar sebelum pengindeksan | Pastikan index.getEvents().FileIndexing.add(...) dijalankan sebelum pemanggilan index.add(...) apa pun. |
| Pencarian tidak menghasilkan hasil | Nama atribut tidak cocok (case‑sensitive) | Gunakan nama atribut yang tepat saat membuat filter (createAttribute("main")). |
| Kesalahan out‑of‑memory pada batch besar | Terjadi terlalu banyak perubahan dalam satu batch | Bagi pembaruan besar menjadi instance AttributeChangeBatch yang lebih kecil (mis., 5 000 dokumen per batch). |
| Lisensi tidak dikenali | Menggunakan JAR percobaan tanpa menerapkan file lisensi | Panggil License license = new License(); license.setLicense("path/to/license.file"); sebelum operasi indeks apa pun. |
Pertanyaan yang sering diajukan
Q: Apa saja prasyarat untuk menggunakan GroupDocs.Search di Java?
A: Java 8+, pustaka GroupDocs.Search, dan pengetahuan dasar tentang konsep pengindeksan.
Q: Bagaimana cara menginstal GroupDocs.Search melalui Maven?
A: Tambahkan repositori dan dependensi yang ditunjukkan pada bagian pengaturan Maven ke pom.xml Anda.
Q: Bisakah saya memodifikasi atribut setelah dokumen diindeks?
A: Ya, gunakan AttributeChangeBatch untuk memperbarui atribut dokumen secara batch tanpa pengindeksan ulang.
Q: Bagaimana jika proses pengindeksan saya lambat?
A: Optimalkan memori JVM (-Xmx), gunakan pembaruan batch, dan tingkatkan ke versi pustaka terbaru untuk perbaikan kinerja.
Q: Di mana saya dapat menemukan lebih banyak sumber tentang GroupDocs.Search untuk Java?
A: Kunjungi dokumentasi resmi atau jelajahi forum komunitas.
Sumber daya
- Dokumentasi: GroupDocs.Search for Java Docs
- Referensi API: API Reference
- Unduhan: Latest Releases
- GitHub: GitHub GroupDocs.Search
- Forum dukungan gratis: GroupDocs Forums
- Lisensi sementara: License Page
Terakhir Diperbarui: 2026-09-21
Diuji Dengan: GroupDocs.Search 25.4 untuk Java
Penulis: 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");