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
- Zainstaluj bibliotekę – użyj fragmentu Maven podanego powyżej lub pobierz plik JAR z GroupDocs.
- Uzyskaj licencję – rozpocznij od licencji próbnej, a następnie przejdź na pełną wersję przy wdrożeniu produkcyjnym.
- 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