Cara mengimplementasikan pencarian teks penuh java dengan GroupDocs.Search

Di era aplikasi berbasis data, java full text search sangat penting untuk mengubah koleksi dokumen besar menjadi basis pengetahuan yang dapat dicari secara instan. Baik Anda membangun portal tingkat perusahaan maupun utilitas desktop ringan, jaringan pencarian yang terkonfigurasi dengan baik dapat mengurangi latensi kueri dari detik ke milidetik dan menjaga hasil tetap relevan seiring pertumbuhan data. Tutorial ini memandu Anda melalui penyebaran GroupDocs.Search for Java, menambahkan file ke pencarian, mengkonfigurasi direktori pada node, dan mengaktifkan pengindeksan waktu nyata sehingga indeks Anda tetap segar tanpa intervensi manual.

Mengapa ini penting: Indeks java full text search mengurangi latensi kueri, skalabel dengan volume data, dan membawa kemampuan full‑text yang kuat ke solusi berbasis Java apa pun—portal web, aplikasi desktop, atau layanan mikro cloud.

Jawaban Cepat

  • Apa tujuan utama GroupDocs.Search? It provides a scalable, java search engine that indexes and searches documents across a distributed network.
  • Versi mana yang harus saya gunakan? The latest stable release (e.g., 25.4) is recommended for new projects.
  • Apakah saya membutuhkan lisensi? A 30‑day free trial is available; a permanent license is required for production use.
  • Bisakah saya menambahkan file dan seluruh direktori? Yes – use the addFiles and addDirectories helpers to ingest content.
  • Versi Java apa yang diperlukan? Java 8 or higher, with Maven for dependency management.
  • Bagaimana cara kerja real time indexing java? By subscribing to node events you can trigger automatic re‑indexing as files change.

Apa itu “create searchable index java”?

Membuat indeks yang dapat dicari dalam Java berarti membangun struktur data yang memetakan istilah ke dokumen yang mengandungnya, memungkinkan kueri full‑text yang cepat. GroupDocs.Search for Java mengabstraksi pekerjaan berat, memungkinkan Anda fokus pada memasukkan dokumen dan menyesuaikan perilaku pencarian.

Mengapa menggunakan GroupDocs.Search untuk Java?

GroupDocs.Search menyediakan mesin pencari java yang dapat diskalakan secara horizontal, mendukung lebih dari 50 format input dan output, serta menawarkan pengindeksan berbasis peristiwa. Menyebarkan beberapa node mendistribusikan beban kerja pengindeksan, sementara pemeriksaan kesehatan bawaan menjaga jaringan tetap andal. Ini juga menyediakan RESTful APIs dan analyzer yang dapat disesuaikan untuk relevansi yang dioptimalkan.

Prasyarat

  • JDK 8+ terpasang pada mesin pengembangan Anda.
  • IDE seperti IntelliJ IDEA atau Eclipse.
  • Pengetahuan dasar tentang Java dan Maven.
  • Akses ke pustaka GroupDocs.Search for Java (unduh atau Maven).

Menyiapkan GroupDocs.Search untuk Java

Dependensi Maven

Tambahkan repositori dan dependensi ke pom.xml Anda:

<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>

Tip pro: Pastikan nomor versi selalu terbaru dengan memeriksa halaman rilis resmi.

Anda juga dapat mengunduh JAR langsung dari situs resmi: GroupDocs.Search for Java releases.

Akuisisi Lisensi

  • Uji coba gratis: evaluasi 30 hari.
  • Lisensi sementara: Minta untuk pengujian lanjutan.
  • Pembelian: Diperlukan untuk penyebaran produksi.

Inisialisasi Dasar

Buat objek konfigurasi yang menunjuk ke folder tempat file indeks akan disimpan dan mendefinisikan port komunikasi dasar:

import com.groupdocs.search.Configuration;

class InitializeSearch {
    public static void main(String[] args) {
        String basePath = "your/base/path";
        int basePort = 8080;
        
        Configuration config = new ConfiguringSearchNetwork().configure(basePath, basePort);
        // Use this configuration for subsequent operations
    }
}

Cara membuat searchable index java dengan GroupDocs.Search?

Muat objek SearchConfiguration, mulai SearchNetworkNode, dan panggil node.getIndexer().addFiles(...) untuk mengisi indeks. Pola satu baris ini memulai jaringan java full text search yang berfungsi penuh, siap menerima kueri secara langsung. Anda kemudian dapat menskalakan dengan menambahkan lebih banyak node yang berbagi jalur dasar dan rentang port yang sama.

Fitur 1 – konfigurasi dan penyiapan jaringan

Kelas SearchConfiguration menyimpan semua pengaturan yang diperlukan untuk memulai sebuah node.

import com.groupdocs.search.Configuration;
import com.groupdocs.search.scaling.*;

class ConfiguringSearchNetwork {
    public static Configuration configure(String basePath, int basePort) {
        // Configure the search network with specified base path and port
        return new Configuration(basePath, basePort);
    }
}
  • basePath – Direktori tempat data indeks akan disimpan.
  • basePort – Port awal; setiap node akan meningkat dari nilai ini.

Fitur 2 – menyebarkan node jaringan pencarian

SearchNetworkNode mewakili layanan pengindeksan individual yang dapat dijalankan pada mesin apa pun.

import com.groupdocs.search.scaling.*;

class SearchNetworkDeployment {
    public static SearchNetworkNode[] deploy(String basePath, int basePort, Configuration configuration) {
        // Deploy nodes based on the provided configuration
        return new SearchNetworkNode[]{new SearchNetworkNode()};
    }
}

SearchNetworkNode adalah komponen runtime inti yang menyimpan indeks, memproses peristiwa tambah/hapus, dan merespons kueri pencarian. Menyebarkan beberapa node memungkinkan Anda create java full text search klaster yang diskalakan secara horizontal.

Fitur 3 – berlangganan ke peristiwa node

Pembaruan waktu nyata menjaga indeks tetap sinkron dengan perubahan sistem file.

import com.groupdocs.search.scaling.*;

class SearchNetworkNodeEvents {
    public static void subscribe(SearchNetworkNode node) {
        // Logic to subscribe to the specified node's events
    }
}

Dengan mendengarkan peristiwa, Anda dapat secara otomatis memicu pengindeksan ulang ketika file baru muncul, mencapai event driven indexing tanpa skrip manual.

Fitur 4 – menambahkan direktori ke node jaringan

Gunakan pembantu ini untuk add directories to node, mengumpulkan secara rekursif semua dokumen yang didukung.

import java.io.File;
import java.util.ArrayList;

class DirectoryAdder {
    public static void addDirectories(SearchNetworkNode node, String... directoryPaths) {
        ArrayList<String> files = new ArrayList<>();
        for (String directoryPath : directoryPaths) {
            final File folder = new File(directoryPath);
            listFiles(folder, files);
        }
        addFiles(node, files.toArray(new String[0]));
    }

    private static void listFiles(final File folder, ArrayList<String> list) {
        for (final File fileEntry : folder.listFiles()) {
            if (fileEntry.isDirectory()) {
                listFiles(fileEntry, list);
            } else {
                list.add(fileEntry.getPath());
            }
        }
    }
}

Fitur 5 – menambahkan file ke node jaringan

Ketika Anda membutuhkan kontrol detail, add files to search secara individual:

import com.groupdocs.search.Document;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import org.apache.commons.io.FilenameUtils;
import com.groupdocs.search.Indexer;
import com.groupdocs.search.options.*;

class FileAdder {
    public static void addFiles(SearchNetworkNode node, String... filePaths) {
        try {
            InputStream[] streams = new FileInputStream[filePaths.length];
            Document[] documents = new Document[filePaths.length];
            for (int i = 0; i < filePaths.length; i++) {
                String filePath = filePaths[i];
                InputStream stream = new FileInputStream(filePath);
                streams[i] = stream;
                
                // Create a document from the input stream
                String fileName = FilenameUtils.getName(filePath);
                String extension = "." + FilenameUtils.getExtension(filePath);
                Document document = Document.createFromStream(
                    fileName,
                    new Date(),
                    extension,
                    stream);
                documents[i] = document;
            }

            // Initialize the indexer and configure options
            Indexer indexer = node.getIndexer();
            IndexingOptions options = new IndexingOptions();
            options.setUseRawTextExtraction(false);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Kasus penggunaan umum

  • Portal dokumen perusahaan yang membutuhkan pencarian instan di ribuan file PDF dan Office.
  • Platform e‑discovery hukum di mana bukti baru terus ditambahkan dan harus dapat dicari secara real time.
  • Sistem manajemen konten yang menyimpan gambar, presentasi, dan spreadsheet serta memerlukan pencarian full‑text.

Masalah umum & solusi

MasalahAlasanSolusi
No documents appear in search resultsIndeks belum dikomitPanggil node.getIndexer().commit() setelah menambahkan file.
Port conflict errorLayanan lain menggunakan basePortPilih basePort yang berbeda atau verifikasi port yang bebas.
Unsupported file formatPustaka tidak memiliki parserPastikan ekstensi file didukung atau tambahkan ekstraktor khusus.

Tips pemecahan masalah

  • Verifikasi kesehatan node: Gunakan endpoint pemeriksaan kesehatan bawaan (http://localhost:{port}/health) untuk memastikan setiap node berjalan.
  • Pantau penggunaan memori: Batch besar dokumen dapat meningkatkan penggunaan memori; indeks dalam potongan lebih kecil dan panggil commit() secara berkala.
  • Periksa log: GroupDocs.Search menulis log terperinci ke folder basePath—tinjau untuk kesalahan parsing atau timeout jaringan.

Pertanyaan yang sering diajukan

Q: Bisakah saya menggunakan GroupDocs.Search pada aplikasi Java berbasis cloud?
A: Ya. Pustaka ini bekerja dengan runtime Java apa pun, dan Anda dapat mengarahkan basePath ke folder yang dipasang di jaringan atau mount penyimpanan cloud.

Q: Bagaimana cara memperbarui indeks ketika file berubah?
A: Berlangganan ke peristiwa node (lihat Fitur 3) dan panggil addFiles atau addDirectories lagi untuk jalur yang dimodifikasi.

Q: Apakah ada batasan jumlah node yang dapat saya deploy?
A: Secara praktis, batasannya ditentukan oleh perangkat keras dan bandwidth jaringan Anda. API tidak menetapkan batas keras.

Q: Apakah saya perlu me-restart node setelah menambahkan file baru?
A: Tidak. Menambahkan file memicu pengindeksan secara otomatis; Anda hanya perlu melakukan commit jika menunda operasi.

Q: Format dokumen apa yang didukung secara default?
A: PDF, DOC/DOCX, XLS/XLSX, PPT/PPTX, TXT, HTML, dan banyak tipe gambar—lebih dari 50 format secara total.

Q: Bagaimana saya dapat mengaktifkan real time indexing java untuk folder yang terus menerima unggahan?
A: Implementasikan pengamat sistem file (mis., java.nio.file.WatchService) yang memanggil DirectoryAdder.addDirectories(node, path) setiap kali file baru terdeteksi.


Terakhir diperbarui: 2026-09-27
Diuji dengan: GroupDocs.Search for Java 25.4
Penulis: GroupDocs

Tutorial Terkait