Jak zaimplementować pełnotekstowe wyszukiwanie java z GroupDocs.Search

W erze aplikacji opartych na danych, java full text search jest niezbędne do przekształcania ogromnych zbiorów dokumentów w natychmiastowo przeszukiwalne bazy wiedzy. Niezależnie od tego, czy tworzysz portal klasy korporacyjnej, czy lekki program desktopowy, dobrze skonfigurowana sieć wyszukiwania może skrócić opóźnienie zapytań z sekund do milisekund i utrzymać wyniki istotne w miarę wzrostu danych. Ten samouczek przeprowadzi Cię przez wdrożenie GroupDocs.Search for Java, dodawanie plików do wyszukiwania, konfigurowanie katalogów na węzłach oraz włączanie indeksowania w czasie rzeczywistym, aby Twój indeks pozostawał aktualny bez ręcznej interwencji.

Dlaczego to ważne: Indeks java full text search zmniejsza opóźnienie zapytań, skaluje się wraz z wolumenem danych i zapewnia potężne możliwości pełnotekstowego wyszukiwania w dowolnym rozwiązaniu opartym na Javie — portalach internetowych, aplikacjach desktopowych lub mikroserwisach w chmurze.

Szybkie odpowiedzi

  • Jaki jest główny cel GroupDocs.Search? Zapewnia skalowalny silnik wyszukiwania java, który indeksuje i przeszukuje dokumenty w rozproszonej sieci.
  • Którą wersję powinienem używać? Najnowsze stabilne wydanie (np. 25.4) jest zalecane dla nowych projektów.
  • Czy potrzebuję licencji? Dostępna jest 30‑dniowa darmowa wersja próbna; stała licencja jest wymagana do użytku produkcyjnego.
  • Czy mogę dodać zarówno pliki, jak i całe katalogi? Tak – użyj pomocników addFiles i addDirectories, aby wczytać zawartość.
  • Jaka wersja Java jest wymagana? Java 8 lub wyższa, z Mavenem do zarządzania zależnościami.
  • Jak działa indeksowanie w czasie rzeczywistym w java? Subskrybując zdarzenia węzła, możesz wywoływać automatyczne ponowne indeksowanie w miarę zmian plików.

Co to jest „create searchable index java”?

Tworzenie indeksu przeszukiwalnego w Javie oznacza budowanie struktury danych, która mapuje terminy na dokumenty je zawierające, umożliwiając szybkie zapytania pełnotekstowe. GroupDocs.Search for Java abstrahuje ciężką pracę, pozwalając skupić się na dostarczaniu dokumentów i dostrajaniu zachowania wyszukiwania.

Dlaczego używać GroupDocs.Search for Java?

GroupDocs.Search dostarcza silnik wyszukiwania java, który skaluje się poziomo, obsługuje ponad 50 formatów wejścia i wyjścia oraz oferuje indeksowanie sterowane zdarzeniami. Wdrożenie wielu węzłów rozkłada obciążenie indeksowania, a wbudowane kontrole zdrowia utrzymują sieć niezawodną. Zapewnia także interfejsy RESTful API oraz konfigurowalne analizatory dla precyzyjnie dopasowanej trafności.

Wymagania wstępne

  • JDK 8+ zainstalowane na Twojej maszynie deweloperskiej.
  • IDE, takie jak IntelliJ IDEA lub Eclipse.
  • Podstawowa znajomość Java i Maven.
  • Dostęp do biblioteki GroupDocs.Search for Java (pobranie lub Maven).

Konfiguracja GroupDocs.Search for Java

Zależność Maven

Dodaj repozytorium i zależność do swojego pom.xml:

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

Pro tip: Utrzymuj numer wersji aktualny, sprawdzając oficjalną stronę wydań.

Możesz również pobrać plik JAR bezpośrednio z oficjalnej strony: GroupDocs.Search for Java releases.

Uzyskiwanie licencji

  • Free trial: 30‑dniowa ocena.
  • Temporary license: Prośba o przedłużone testowanie.
  • Purchase: Wymagane przy wdrożeniach produkcyjnych.

Podstawowa inicjalizacja

Utwórz obiekt konfiguracji, który wskazuje folder, w którym będą przechowywane pliki indeksu i definiuje podstawowy port komunikacji:

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

Jak stworzyć indeks przeszukiwalny java z GroupDocs.Search?

Załaduj obiekt SearchConfiguration, uruchom SearchNetworkNode i wywołaj node.getIndexer().addFiles(...), aby wypełnić indeks. Ten jednowierszowy wzorzec uruchamia w pełni funkcjonalną sieć java full text search, gotową do przyjmowania zapytań od razu. Następnie możesz skalować, dodając kolejne węzły, które współdzielą tę samą ścieżkę bazową i zakres portów.

Funkcja 1 – konfiguracja i ustawienie sieci

Klasa SearchConfiguration zawiera wszystkie ustawienia niezbędne do uruchomienia węzła.

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 – Katalog, w którym będą przechowywane dane indeksu.
  • basePort – Port początkowy; każdy węzeł będzie inkrementował od tej wartości.

Funkcja 2 – wdrażanie węzłów sieci wyszukiwania

SearchNetworkNode reprezentuje indywidualną usługę indeksowania, którą można uruchomić na dowolnym komputerze.

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 jest podstawowym komponentem uruchomieniowym, który hostuje indeks, przetwarza zdarzenia dodawania/usuwania i odpowiada na zapytania wyszukiwania. Wdrożenie wielu węzłów pozwala Ci create java full text search klasterów, które skalują się poziomo.

Funkcja 3 – subskrypcja zdarzeń węzła

Aktualizacje w czasie rzeczywistym utrzymują indeks zsynchronizowany ze zmianami w systemie plików.

import com.groupdocs.search.scaling.*;

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

Nasłuchując zdarzeń, możesz automatycznie wywoływać ponowne indeksowanie, gdy pojawią się nowe pliki, osiągając event driven indexing bez ręcznych skryptów.

Funkcja 4 – dodawanie katalogów do węzła sieciowego

Użyj tego pomocnika, aby add directories to node, rekurencyjnie zbierając wszystkie obsługiwane dokumenty.

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());
            }
        }
    }
}

Funkcja 5 – dodawanie plików do węzła sieciowego

Gdy potrzebujesz precyzyjnej kontroli, add files to search indywidualnie:

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();
        }
    }
}

Typowe przypadki użycia

  • Enterprise document portals które potrzebują natychmiastowego wyszukiwania wśród tysięcy plików PDF i Office.
  • Legal e‑discovery platforms gdzie nowe dowody są ciągle dodawane i muszą być przeszukiwalne w czasie rzeczywistym.
  • Content management systems które przechowują obrazy, prezentacje i arkusze kalkulacyjne i wymagają pełnotekstowego wyszukiwania.

Typowe problemy i rozwiązania

ProblemPowódRozwiązanie
Brak dokumentów w wynikach wyszukiwaniaIndeks nie został zatwierdzonyWywołaj node.getIndexer().commit() po dodaniu plików.
Błąd konfliktu portuInna usługa używa basePortWybierz inny basePort lub sprawdź dostępność portów.
Nieobsługiwany format plikuBiblioteka nie posiada parseraUpewnij się, że rozszerzenie pliku jest obsługiwane lub dodaj własny ekstraktor.

Wskazówki dotyczące rozwiązywania problemów

  • Sprawdź stan węzła: Użyj wbudowanego punktu końcowego sprawdzania zdrowia (http://localhost:{port}/health), aby potwierdzić, że każdy węzeł działa.
  • Monitoruj zużycie pamięci: Duże partie dokumentów mogą zwiększyć zużycie pamięci; indeksuj w mniejszych partiach i wywołuj commit() okresowo.
  • Sprawdź logi: GroupDocs.Search zapisuje szczegółowe logi w folderze basePath — przejrzyj je pod kątem błędów parsowania lub przekroczeń czasu sieci.

Najczęściej zadawane pytania

Q: Czy mogę używać GroupDocs.Search w aplikacji Java działającej w chmurze?
A: Tak. Biblioteka działa z dowolnym środowiskiem uruchomieniowym Java, a basePath możesz skierować do folderu zamontowanego sieciowo lub do montowania przechowywania w chmurze.

Q: Jak zaktualizować indeks, gdy plik się zmieni?
A: Subskrybuj zdarzenia węzła (zobacz Funkcję 3) i ponownie wywołaj addFiles lub addDirectories dla zmodyfikowanych ścieżek.

Q: Czy istnieje limit liczby węzłów, które mogę wdrożyć?
A: Praktycznie limit jest określony przez Twój sprzęt i przepustowość sieci. API nie narzuca sztywnego limitu.

Q: Czy muszę restartować węzły po dodaniu nowych plików?
A: Nie. Dodawanie plików wyzwala indeksowanie automatycznie; musisz jedynie wykonać commit, jeśli odraczysz operację.

Q: Jakie formaty dokumentów są obsługiwane od razu?
A: PDF, DOC/DOCX, XLS/XLSX, PPT/PPTX, TXT, HTML oraz wiele typów obrazów — ponad 50 formatów łącznie.

Q: Jak mogę włączyć indeksowanie w czasie rzeczywistym java dla folderu, który ciągle otrzymuje przesyłane pliki?
A: Zaimplementuj obserwatora systemu plików (np. java.nio.file.WatchService), który wywołuje DirectoryAdder.addDirectories(node, path) za każdym razem, gdy wykryty zostanie nowy plik.

Ostatnia aktualizacja: 2026-09-27
Testowano z: GroupDocs.Search for Java 25.4
Autor: GroupDocs

Powiązane samouczki