Highlight Search Results Java – indeksowanie synchroniczne i asynchroniczne

Zwiększ wydajność swoich aplikacji Java, highlighting search results Java dzięki potężnej bibliotece GroupDocs.Search. Niezależnie od tego, czy pracujesz z kilkoma plikami, czy z ogromnym repozytorium, opanowanie zarówno synchronicznego, jak i asynchronicznego indeksowania pozwala dostarczać szybkie, dokładne wyniki bez blokowania wątków aplikacji.

Quick Answers

  • Co oznacza „highlight search results Java”? Odnosi się do renderowania dopasowanych terminów w wynikach wyszukiwania przy użyciu wskazówek wizualnych (np. tagów HTML <mark>), aby użytkownicy mogli zobaczyć, gdzie zapytanie pojawia się w każdym dokumencie.
  • Kiedy powinienem używać indeksowania synchronicznego? Dla małych i średnich zbiorów danych, gdzie wymagana jest natychmiastowa dostępność nowo dodanych dokumentów.
  • Kiedy indeksowanie asynchroniczne jest preferowane? Podczas przetwarzania dużych kolekcji dokumentów lub uruchamiania na wątku UI, gdzie trzeba utrzymać responsywność aplikacji.
  • Czy potrzebna jest licencja? Darmowa wersja próbna wystarcza do rozwoju; pełna licencja odblokowuje zaawansowane funkcje i usuwa limity użytkowania.
  • Jaką wersję Java obsługuje się? Java 8 lub nowsza.

Co to jest „highlight search results Java”?

Wyróżnianie wyników wyszukiwania w Javie oznacza pobranie surowych dopasowań zwróconych przez GroupDocs.Search i otoczenie dopasowanych terminów znacznikami HTML (lub innym formatowaniem), aby wyróżniały się przy wyświetlaniu w interfejsie użytkownika lub na stronie internetowej. Poprawia to doświadczenie użytkownika, natychmiast pokazując kontekst każdego trafienia.

Why use GroupDocs.Search for Java?

GroupDocs.Search provides a high‑performance, language‑agnostic engine that supports:

  • Indeksowanie i wyszukiwanie w czasie rzeczywistym
  • Przetwarzanie asynchroniczne dla dużych obciążeń
  • Wbudowane wyróżnianie wyników
  • Obsługa wielu języków i własnych analizatorów

These capabilities make it ideal for content management systems, e‑commerce catalogs, and enterprise document repositories.

Wymagania wstępne

  • Java Development Kit (JDK 8 lub nowszy) zainstalowany.
  • IDE, takie jak IntelliJ IDEA lub Eclipse.
  • Folder zawierający dokumenty, które chcesz zindeksować.
  • Maven do zarządzania zależnościami (lub możesz pobrać plik JAR ręcznie).

Required Libraries and Dependencies

Add GroupDocs.Search to your Maven project:

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

For direct downloads, get the latest version from GroupDocs.Search for Java releases.

Environment Setup

  • Sprawdź, czy JAVA_HOME wskazuje na kompatybilny JDK.
  • Utwórz projekt w swoim IDE i dodaj powyższą konfigurację Maven.
  • Przygotuj katalog (np. documents/) z przykładowymi plikami tekstowymi, PDF lub Word.

How to set up GroupDocs.Search for Java

  1. Zainstaluj bibliotekę – użyj fragmentu Maven podanego powyżej lub pobierz plik JAR z GroupDocs.
  2. Uzyskaj licencję – rozpocznij od licencji próbnej, a następnie przejdź na pełną wersję przy wdrożeniu produkcyjnym.
  3. Zainicjuj indeks – 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 wyróżniać wyniki wyszukiwania Java – indeksowanie synchroniczne

Indeksowanie synchroniczne przetwarza dokumenty natychmiast, dzięki czemu nowo dodane pliki są od razu dostępne do wyszukiwania.

Krok 1: Utwórz indeks i podłącz 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 uruchom wyszukiwanie

        // Add documents
        index.add(documentsFolder);

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

Krok 3: Przetwórz wyniki i highlight search results 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);
        }
    }
}

DocumentHighlighter automatycznie otacza dopasowane terminy tagami <mark> (lub dowolnym formatem, który skonfigurujesz), dostarczając highlighted search results gotowe do wyświetlenia.

Jak wyróżniać wyniki wyszukiwania Java – indeksowanie asynchroniczne

Podczas pracy z tysiącami plików blokowanie głównego wątku jest niepożądane. Indeksowanie asynchroniczne pozwala silnikowi działać w tle.

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

Podczas budowania indeksu aplikacja może obsługiwać inne żądania. Gdy zdarzenie StatusChanged zgłosi Ready, możesz bezpiecznie wykonywać wyszukiwania i uzyskać highlighted search results Java.

Jak index documents java – praktyczne wskazówki

  • Rozmiar partii: dla ogromnych kolekcji podziel folder na mniejsze partie, aby uniknąć skoków pamięci.
  • Filtry plików: użyj IndexingOptions.setFileExtensions, aby uwzględnić tylko potrzebne formaty (np. .pdf, .docx).
  • Reindeksowanie: gdy dokumenty się zmieniają, wywołaj index.update(documentPath) zamiast przebudowywać cały indeks.

Rozważania dotyczące wydajności

  • Pamięć: monitoruj zużycie sterty; zwiększ -Xmx, jeśli przetwarzasz wiele dużych plików.
  • CPU: indeksowanie asynchroniczne rozkłada obciążenie, ale nadal zużywa CPU — monitoruj za pomocą JVisualVM.
  • Wyróżnianie wyników: wyróżnianie dodaje niewielki narzut przetwarzania; buforuj wygenerowany HTML, jeśli musisz wielokrotnie wyświetlać wyniki.

Najczęściej zadawane pytania

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

P: Jak dostosować styl wyróżniania?
O: Dostarcz własną implementację DocumentHighlighter, która zapisuje pożądane tagi HTML, CSS lub XML wokół dopasowanych terminów.

P: Jakie typy plików obsługuje GroupDocs.Search domyślnie?
O: Tekst, PDF, DOC/DOCX, XLS/XLSX, PPT/PPTX, HTML oraz wiele innych dzięki wbudowanym parserom.

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

P: Jak zabezpieczyć folder indeksu?
O: Przechowuj indeks w chronionym katalogu, ustaw odpowiednie uprawnienia systemu plików i rozważ szyfrowanie indeksu przy użyciu funkcji bezpieczeństwa biblioteki.


Ostatnia aktualizacja: 2026-02-08
Testowano z: GroupDocs.Search 25.4 for Java
Autor: GroupDocs