Podświetlanie wyników wyszukiwania Java – indeksowanie synchroniczne i asynchroniczne

W tym przewodniku odkryjesz, jak highlight search results Java używając biblioteki GroupDocs.Search, oraz zobaczysz krok po kroku, jak indeksować dokumenty Java zarówno synchronicznie, jak i asynchronicznie. Niezależnie od tego, czy tworzysz małe narzędzie desktopowe, czy dużą usługę wyszukiwania dla przedsiębiorstwa, te techniki pozwalają dostarczać natychmiastowe, wizualnie czytelne dopasowania bez blokowania wątków aplikacji.

Szybkie odpowiedzi

  • What does “highlight search results Java” mean? Oznacza to otaczanie każdego dopasowanego terminu w zwróconych fragmentach znacznikami (np. <mark>), aby użytkownicy mogli natychmiast zobaczyć kontekst trafienia.
  • When should I use synchronous indexing? Używaj go dla małych i średnich kolekcji, gdzie potrzebujesz, aby dokument był dostępny do wyszukiwania w momencie jego dodania.
  • When is asynchronous indexing preferable? Wybierz go dla dużych partii lub gdy wątek UI musi pozostać responsywny, podczas gdy indeks jest tworzony w tle.
  • Do I need a license? Darmowa wersja próbna działa w środowisku deweloperskim; pełna licencja usuwa ograniczenia i odblokowuje zaawansowane funkcje.
  • Which Java version is supported? Java 8 lub nowsza.

Co to jest “highlight search results Java”?

highlight search results java to proces pobierania surowych danych dopasowań z GroupDocs.Search i wstawiania wizualnych wskazówek — zazwyczaj znaczników HTML <mark> — wokół każdego znalezionego terminu. Dzięki temu fragmenty wyników są od razu czytelne na stronie internetowej lub w komponencie Swing, poprawiając doświadczenie użytkownika, pokazując dokładnie, gdzie pojawia się zapytanie.

Dlaczego używać GroupDocs.Search dla Java?

GroupDocs.Search dostarcza wysokowydajny, językowo‑agnostyczny silnik, który może przetwarzać do 5 000 dokumentów na sekundę, obsługiwać ponad 30 formatów plików oraz indeksować kolekcje liczące 10 milionów dokumentów bez ładowania całego korpusu do pamięci. Wbudowane podświetlanie, indeksowanie w czasie rzeczywistym i analizatory wielojęzykowe czynią go idealnym dla systemów zarządzania treścią, katalogów e‑commerce oraz repozytoriów dokumentów przedsiębiorstw.

Wymagania wstępne

  • Java Development Kit (JDK 8 lub nowszy) zainstalowany i poprawnie ustawiony JAVA_HOME.
  • IDE, takie jak IntelliJ IDEA lub Eclipse.
  • Folder (np. documents/) zawierający pliki, które chcesz indeksować — zwykły tekst, PDF, DOCX itp.
  • Maven do zarządzania zależnościami (lub możesz ręcznie dodać plik JAR).

Wymagane biblioteki i zależności

Dodaj GroupDocs.Search do swojego pliku Maven 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>

Aby pobrać bezpośrednio, pobierz najnowszą wersję z GroupDocs.Search for Java releases.

Konfiguracja środowiska

  • Zweryfikuj, że JAVA_HOME wskazuje na kompatybilny JDK.
  • Utwórz nowy projekt Maven i wklej powyższy fragment do sekcji <dependencies>.
  • Umieść przykładowe pliki w katalogu takim jak src/main/resources/documents/.

Jak skonfigurować GroupDocs.Search dla Java

Index jest klasą podstawową reprezentującą kolekcję możliwą do przeszukiwania przechowywaną na dysku.

Utwórz instancję Index wskazującą na folder na dysku, zastosuj licencję, jeśli ją posiadasz, i opcjonalnie skonfiguruj analizator do tokenizacji specyficznej dla języka. Ten krok przygotowawczy zapewnia, że silnik może efektywnie odczytywać, zapisywać i przeszukiwać indeks.

Klasa Index jest podstawowym komponentem reprezentującym kolekcję możliwą do przeszukiwania na dysku. Po jej zainicjowaniu wszystkie operacje indeksowania i zapytań przepływają przez ten obiekt.

  1. Install the library – Użyj powyższego fragmentu Maven lub pobierz plik JAR z GroupDocs.
  2. Obtain a license – Rozpocznij od licencji próbnej; przed wdrożeniem zamień ją na klucz produkcyjny.
  3. Initialize the index – Poniższy fragment pokazuje, jak utworzyć (lub otworzyć) folder indeksu:
import com.groupdocs.search.Index;

// Create an index in the specified folder
Index index = new Index("path/to/index/folder");

Jak podświetlać wyniki wyszukiwania Java – indeksowanie synchroniczne

DocumentHighlighter jest klasą pomocniczą generującą podświetlone fragmenty z wyników wyszukiwania.

Załaduj indeks, dodaj dokumenty przy użyciu index.add(documentPath), wykonaj zapytanie, a następnie wywołaj DocumentHighlighter, aby otoczyć dopasowania znacznikami <mark>. Cały proces działa w wątku wywołującym, więc dokument staje się dostępny do wyszukiwania natychmiast po zwróceniu add dla użytkowników końcowych.

Krok 1: utwórz indeks i dodaj obsługę błędów

import com.groupdocs.search.*;
import com.groupdocs.search.events.*;
import java.nio.file.Paths;

public class SynchronousIndexingFeature {
    public static void main(String[] args) {
        String indexFolder = "YOUR_DOCUMENT_DIRECTORY/SynchronousIndexing";
        String documentsFolder = YOUR_DOCUMENT_DIRECTORY; // Replace with actual directory path

        Index index = new Index(indexFolder);

        // Handle errors
        index.getEvents().ErrorOccurred.add(new EventHandler<IndexErrorEventArgs>() {
            @Override
            public void invoke(Object sender, IndexErrorEventArgs args) {
                System.out.println(args.getMessage());
            }
        });

Krok 2: dodaj dokumenty i wykonaj wyszukiwanie

        // Add documents
        index.add(documentsFolder);

        // Perform a search
        String query = "tincidunt";
        SearchResult result = index.search(query);

Krok 3: przetwórz wyniki i podświetl wyniki wyszukiwania Java

        for (int i = 0; i < result.getDocumentCount(); i++) {
            FoundDocument document = result.getFoundDocument(i);
            System.out.println(": Document: " + document.getDocumentInfo().getFilePath());
            System.out.println(": Occurrences: " + document.getOccurrenceCount());
        }

        // Highlight results
        if (result.getDocumentCount() > 0) {
            FoundDocument document = result.getFoundDocument(0);
            String path = YOUR_OUTPUT_DIRECTORY + "/Highlighted.html";
            OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, path);
            DocumentHighlighter highlighter = new DocumentHighlighter(outputAdapter);
            index.highlight(document, highlighter);
        }
    }
}

Jak podświetlać wyniki wyszukiwania Java – indeksowanie asynchroniczne

IndexingOptions konfiguruje sposób działania procesu indeksowania, w tym tryb synchroniczny lub asynchroniczny.

Skonfiguruj IndexingOptions, aby działały w trybie tła, subskrybuj zdarzenia StatusChanged i pozwól silnikowi indeksować pliki, podczas gdy interfejs UI obsługuje inne żądania. Gdy status zmieni się na Ready, możesz wykonywać wyszukiwania i uzyskiwać podświetlone fragmenty tak jak w trybie synchronicznym.

AsyncIndexingListener otrzymuje aktualizacje postępu, umożliwiając wyświetlanie paska postępu lub logowanie statusu bez blokowania głównego wątku.

Krok 1: skonfiguruj indeks z nasłuchiwaczami zdarzeń

import com.groupdocs.search.*;
import com.groupdocs.search.events.*;

public class AsynchronousIndexingFeature {
    public static void main(String[] args) {
        String indexFolder = "YOUR_DOCUMENT_DIRECTORY/AsynchronousIndexing";
        String documentsFolder = YOUR_DOCUMENT_DIRECTORY; // Replace with actual directory path

        Index index = new Index(indexFolder);

        // Handle errors and status changes
        index.getEvents().ErrorOccurred.add(new EventHandler<IndexErrorEventArgs>() {
            @Override
            public void invoke(Object sender, IndexErrorEventArgs args) {
                System.out.println(args.getMessage());
            }
        });

        index.getEvents().StatusChanged.add(new EventHandler<BaseIndexEventArgs>() {
            @Override
            public void invoke(Object sender, BaseIndexEventArgs args) {
                if (args.getStatus() != IndexStatus.Ready || args.getStatus() == IndexStatus.Failed) {
                    System.out.println("Indexing completed.");
                }
            }
        });

Krok 2: włącz tryb asynchroniczny i rozpocznij indeksowanie

        // Set up async indexing options
        IndexingOptions options = new IndexingOptions();
        options.setAsync(true);

        // Add documents asynchronously
        index.add(documentsFolder, options);
    }
}

Jak indeksować dokumenty Java – praktyczne wskazówki

index.update(path) aktualizuje istniejący dokument w indeksie przy użyciu pliku podanego w określonej ścieżce.

Podziel duże kolekcje na partie po 1 000–5 000 plików, filtruj po rozszerzeniach, aby uniknąć niepotrzebnego parsowania, i używaj index.update(path) dla zmienionych plików zamiast przebudowywać cały indeks. Te praktyki utrzymują niskie zużycie pamięci i przewidywalny czas indeksowania, zapewniając spójność.

  • Batch size: Dla ogromnych kolekcji podziel folder na mniejsze partie, aby uniknąć skoków pamięci.
  • File filters: Użyj IndexingOptions.setFileExtensions, aby uwzględnić tylko potrzebne formaty (np. .pdf, .docx).
  • Re‑indexing: Gdy dokument się zmieni, wywołaj index.update(documentPath) zamiast tworzyć indeks od nowa.

Rozważania dotyczące wydajności

  • Memory: Monitoruj zużycie sterty; zwiększ -Xmx, jeśli przetwarzasz wiele dużych plików jednocześnie.
  • CPU: Indeksowanie asynchroniczne rozkłada obciążenie na wątki, ale nadal zużywa CPU — śledź zużycie za pomocą JVisualVM.
  • Result highlighting: Podświetlanie dodaje niewielki narzut (≈ 2–5 ms na wynik). Cache’uj wygenerowany HTML, jeśli musisz wielokrotnie wyświetlać te same fragmenty.

Najczęściej zadawane pytania

Q: Czy mogę łączyć indeksowanie synchroniczne i asynchroniczne w tej samej aplikacji?
A: Tak. Używaj indeksowania synchronicznego dla małych, często aktualizowanych zestawów oraz indeksowania asynchronicznego dla importu hurtowego lub zadań w tle.

Q: Jak mogę dostosować styl podświetlania?
A: Dostarcz własną implementację DocumentHighlighter, która zapisuje pożądane znaczniki HTML, CSS lub XML wokół dopasowanych terminów.

Q: Jakie typy plików obsługuje GroupDocs.Search natywnie?
A: Tekst, PDF, DOC/DOCX, XLS/XLSX, PPT/PPTX, HTML i wiele innych dzięki wbudowanym parserom — ponad 30 formatów w sumie.

Q: Czy można wyszukiwać w wielu językach jednocześnie?
A: Oczywiście. GroupDocs.Search zawiera analizatory wielojęzykowe; wystarczy skonfigurować odpowiedni Analyzer przy tworzeniu indeksu.

Q: Jak zabezpieczyć folder indeksu?
A: Przechowuj indeks w chronionym katalogu, ustaw restrykcyjne uprawnienia systemu plików i opcjonalnie zaszyfruj indeks przy użyciu funkcji bezpieczeństwa biblioteki.


Last Updated: 2026-09-11
Tested With: GroupDocs.Search 25.4 for Java
Author: GroupDocs

Powiązane samouczki