Utwórz indeks przeszukiwalny w Javie – Wdrożenie GroupDocs.Search dla Javy
W dzisiejszym świecie napędzanym danymi, tworzenie indeksu przeszukiwalnego java aplikacje muszą efektywnie obsługiwać ogromne kolekcje dokumentów. Niezależnie od tego, czy budujesz wyszukiwarkę klasy enterprise, czy mniejszy projekt, dobrze skonfigurowana sieć wyszukiwania może znacząco poprawić szybkość i trafność wyników. W tym przewodniku przeprowadzimy Cię przez cały proces konfiguracji GroupDocs.Search for Java, od dodawania plików do wyszukiwania po dodawanie katalogów do węzła, abyś mógł od razu rozpocząć indeksowanie dokumentów.
Dlaczego to ważne: Indeks przeszukiwalny zmniejsza opóźnienie zapytań z sekund do milisekund, skaluje się wraz ze wzrostem danych i pozwala dodać potężne możliwości pełnotekstowego wyszukiwania do dowolnego rozwiązania opartego na Javie — niezależnie od tego, czy jest to portal internetowy, aplikacja desktopowa, czy mikroserwis w chmurze.
Szybkie odpowiedzi
- Jaki jest główny cel GroupDocs.Search? Zapewnia skalowalny, oparty na Javie silnik do indeksowania i wyszukiwania dokumentów w rozproszonej sieci.
- Którą wersję powinienem używać? Zalecana jest najnowsza stabilna wersja (np. 25.4) dla nowych projektów.
- Czy potrzebna jest licencja? 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
addFilesiaddDirectories, aby wczytać zawartość. - Jaka wersja Javy jest wymagana? Java 8 lub wyższa, z Mavenem do zarządzania zależnościami.
- Jak działa indeksowanie w czasie rzeczywistym 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 abstrahuje ciężką pracę, pozwalając skupić się na dostarczaniu dokumentów i dostrajaniu zachowań wyszukiwania.
Dlaczego warto używać GroupDocs.Search dla Javy?
- Scalable network architecture – Deploy multiple nodes that share indexing workload.
- Rich document format support – PDFs, Word, Excel, PowerPoint, images, and more.
- Event‑driven updates – Subscribe to node events to keep the index fresh in real time.
- Simple Maven integration – Add a few lines to
pom.xmland start indexing.
Indeksowanie w czasie rzeczywistym java z GroupDocs.Search
GroupDocs.Search wyzwala zdarzenia za każdym razem, gdy plik zostaje dodany, zaktualizowany lub usunięty. Obsługując te zdarzenia, możesz automatycznie wywołać addFiles lub addDirectories, zapewniając synchronizację indeksu bez ręcznej interwencji. Takie podejście jest idealne dla systemów zarządzania dokumentami, portali treści i każdej aplikacji, w której dane zmieniają się często.
Wymagania wstępne
- JDK 8+ zainstalowany na 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).
Konfigurowanie GroupDocs.Search dla Javy
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: Keep the version number up‑to‑date by checking the official releases page.
Możesz także pobrać plik JAR bezpośrednio ze strony oficjalnej: GroupDocs.Search for Java releases.
Uzyskanie licencji
- Free Trial: 30‑day evaluation.
- Temporary License: Request for extended testing.
- Purchase: Required for production deployments.
Podstawowa inicjalizacja
Utwórz obiekt konfiguracji, który wskazuje folder, w którym będą przechowywane pliki indeksu, oraz 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 utworzyć indeks przeszukiwalny w Javie z GroupDocs.Search?
Poniżej rozkładamy kluczowe funkcje, których będziesz potrzebować, aby add files to search i add directories to node, jednocześnie wdrażając skalowalną sieć.
Funkcja 1 – Konfiguracja i ustawienie sieci
Konfigurowanie sieci wyszukiwania jest pierwszym krokiem w budowie indeksu przeszukiwalnego.
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ł zwiększy go o jeden.
Funkcja 2 – Wdrażanie węzłów sieci wyszukiwania
Wdrażanie węzłów rozkłada obciążenie indeksowania na wiele maszyn lub procesów.
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()};
}
}
Każdy SearchNetworkNode uruchamia własną usługę indeksowania, umożliwiając create a searchable index java, który skaluje się poziomo.
Funkcja 3 – Subskrybowanie 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.
Funkcja 4 – Dodawanie katalogów do węzła sieci
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 sieci
Gdy potrzebna jest precyzyjna kontrola, 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 that need instant search across thousands of PDFs and Office files.
- Legal e‑discovery platforms where new evidence is continuously added and must be searchable in real time.
- Content management systems that store images, presentations, and spreadsheets and require full‑text lookup.
Typowe problemy i rozwiązania
| Issue | Reason | Fix |
|---|---|---|
| No documents appear in search results | Index not committed | Call node.getIndexer().commit() after adding files. |
| Port conflict error | Another service uses basePort | Choose a different basePort or verify free ports. |
| Unsupported file format | Library lacks parser | Ensure the file extension is supported or add a custom extractor. |
Porady dotyczące rozwiązywania problemów
- Verify node health: Use the built‑in health‑check endpoint (
http://localhost:{port}/health) to confirm each node is running. - Monitor memory usage: Large batches of documents can spike memory; consider indexing in smaller chunks and calling
commit()periodically. - Check logs: GroupDocs.Search writes detailed logs to the
basePathfolder—review them for parsing errors or network timeouts.
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 Java, a basePath możesz skierować do folderu udostępnionego sieciowo lub do lokalnie zamontowanego magazynu 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 zależy od Twojego sprzętu i przepustowości sieci. API nie narzuca sztywnego limitu.
Q: Czy muszę restartować węzły po dodaniu nowych plików?
A: Nie. Dodawanie plików automatycznie wyzwala indeksowanie; jedynie w razie odroczenia operacji trzeba wywołać commit().
Q: Jakie formaty dokumentów są obsługiwane od ręki?
A: PDFs, DOC/DOCX, XLS/XLSX, PPT/PPTX, TXT, HTML oraz wiele typów obrazów. Pełną listę znajdziesz w oficjalnej dokumentacji.
Q: Jak włączyć indeksowanie w czasie rzeczywistym java dla folderu, który ciągle otrzymuje nowe pliki?
A: Zaimplementuj obserwatora systemu plików (np. java.nio.file.WatchService), który wywołuje DirectoryAdder.addDirectories(node, path) przy każdym wykryciu nowego pliku.
Ostatnia aktualizacja: 2026-02-27
Testowane z: GroupDocs.Search for Java 25.4
Autor: GroupDocs