Opanowanie GroupDocs.Search Java: Wyszukiwanie w przedziale dat i zaawansowane funkcje

W dzisiejszych aplikacjach opartych na danych, date range search jest kluczową funkcją, która pozwala filtrować dokumenty według okresów czasu, znacząco poprawiając trafność i szybkość. Niezależnie od tego, czy tworzysz portal zgodności, katalog e‑commerce, czy system zarządzania treścią, opanowanie wyszukiwania w przedziale dat wraz z innymi potężnymi typami zapytań sprawi, że Twoje rozwiązanie będzie zarówno elastyczne, jak i solidne. Ten przewodnik przeprowadzi Cię przez obsługę błędów, pełny zestaw typów zapytań oraz wskazówki dotyczące wydajności, wszystko z prawdziwym kodem Java, który możesz skopiować i wkleić.

Szybkie odpowiedzi

  • What is date range search? Filtracja dokumentów zawierających daty w określonym przedziale od‑do.
  • Which library provides it? GroupDocs.Search for Java.
  • Do I need a license? Darmowa wersja próbna działa w fazie rozwoju; licencja produkcyjna jest wymagana do użytku komercyjnego.
  • Can I combine it with other queries? Tak — łącz zakresy dat z zapytaniami boolean, faceted lub regex.
  • Is it fast for large datasets? Przy prawidłowym indeksowaniu wyszukiwania trwają mniej niż sekundę, nawet przy milionach rekordów.

Date range search pozwala znaleźć dokumenty, które zawierają daty mieszczące się pomiędzy dwoma granicami, takimi jak „2023‑01‑01 ~~ 2023‑12‑31”. Jest to niezbędne w raportach, dziennikach audytu i wszelkich scenariuszach, w których istotne jest filtrowanie oparte na czasie.

Dlaczego używać GroupDocs.Search for Java?

GroupDocs.Search oferuje jednolite API dla wielu typów zapytań — simple, wildcard, faceted, numeric, date range, regex, boolean i phrase — dzięki czemu możesz tworzyć zaawansowane doświadczenia wyszukiwania bez konieczności używania wielu bibliotek. Jego obsługa błędów oparta na zdarzeniach zapewnia również odporność Twojego procesu indeksowania.

Wymagania wstępne

  • GroupDocs.Search Java library (v25.4 lub nowsza).
  • Java Development Kit (JDK) kompatybilny z Twoim projektem.
  • Maven do zarządzania zależnościami (lub ręczne pobranie).

Wymagane biblioteki i konfiguracja środowiska

Add the GroupDocs repository and dependency to your 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>

Alternatywna konfiguracja

For direct downloads, visit GroupDocs.Search for Java releases.

Licencjonowanie i początkowa konfiguracja

Start with a free trial or a temporary license:

Teraz utwórzmy folder indeksu, który będzie przechowywać Twoje dane do przeszukiwania.

Konfiguracja GroupDocs.Search for Java

Podstawowa inicjalizacja

First, instantiate an Index object that points to a folder on disk:

import com.groupdocs.search.*;

// Initialize Index
String indexFolder = "YOUR_DOCUMENT_DIRECTORY\\output\\BasicUsage\\BuildSearchQuery";
Index index = new Index(indexFolder);

Teraz masz dostęp do wszystkich operacji wyszukiwania.

Przewodnik implementacji

Funkcja 1: Obsługa błędów podczas indeksowania

Jak przechwycić błędy indeksowania (Java)

import com.groupdocs.search.events.*;

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

// Add documents to the index
index.add("YOUR_DOCUMENT_DIRECTORY");

Dlaczego to ważne: Nasłuchując zdarzenia ErrorOccurred, możesz logować problemy, ponawiać nieudane pliki lub ostrzegać użytkowników bez przerywania całego procesu.

Funkcja 2: Proste zapytanie wyszukiwania

Czym jest proste wyszukiwanie?

import com.groupdocs.search.*;

String query = "volutpat";
SearchResult result = index.search(query);

Wynik: Zwraca każdy dokument zawierający termin volutpat.

Funkcja 3: Zapytanie z wieloznacznikiem

Jak działa wyszukiwanie z wieloznacznikiem?

String query = "?ffect";
SearchResult result = index.search(query);

Wynik: Dopasowuje zarówno affect, jak i effect, pokazując moc symbolu ?.

Funkcja 4: Zapytanie fasetowe

Jak wykonać fasetowe wyszukiwanie w Java

String query = "Content: magna";
SearchResult result = index.search(query);

Wynik: Ogranicza wyszukiwanie do pola Content, idealne do filtrowania według metadanych, takich jak kategoria lub autor.

Funkcja 5: Zapytanie o zakres liczbowy

Jak wyszukiwać zakresy liczbowe

String query = "2000 ~~ 3000";
SearchResult result = index.search(query);

Wynik: Pobiera dokumenty, w których wartości liczbowe mieszczą się między 2000 a 3000.

Funkcja 6: Zapytanie o zakres dat

Jak wykonać wyszukiwanie w przedziale dat

import com.groupdocs.search.options.*;
import java.util.*;

String query = "daterange(2000-01-01 ~~ 2001-06-15)";
SearchOptions options = new SearchOptions();

options.getDateFormats().clear();
DateFormatElement[] elements = {
    DateFormatElement.getMonthTwoDigits(),
    DateFormatElement.getDateSeparator(),
    DateFormatElement.getDayOfMonthTwoDigits(),
    DateFormatElement.getDateSeparator(),
    DateFormatElement.getYearFourDigits()
};

DateFormat dateFormat = new DateFormat(elements, "/");
options.getDateFormats().addItem(dateFormat);

SearchResult result = index.search(query, options);

Wyjaśnienie: Poprzez dostosowanie SearchOptions informujesz silnik, aby rozpoznawał daty w formacie MM/DD/YYYY, a następnie pobiera wszystkie rekordy pomiędzy 1 stycznia 2000 a 15 czerwca 2001.

Funkcja 7: Zapytanie wyrażenia regularnego

Jak uruchomić wyszukiwanie regex w Java

String query = "^(.)\\1{2,}";
SearchResult result = index.search(query);

Wynik: Znajduje sekwencje trzech lub więcej identycznych znaków (np. „aaa”, „111”).

Funkcja 8: Zapytanie Boolean

Jak łączyć warunki przy użyciu wyszukiwania Boolean w Java

String query = "justo AND NOT 3456";
SearchResult result = index.search(query);

Wynik: Zwraca dokumenty zawierające justo, ale wyklucza te, które dodatkowo zawierają 3456.

Funkcja 9: Złożone zapytanie Boolean

Jak tworzyć zaawansowane zapytania Boolean

String query = "FileName: Engl?(1~3) OR Content: (3456 AND consequat)";
SearchResult result = index.search(query);

Wynik: Szuka nazw plików podobnych do „English” (z dopuszczeniem 1‑3 znakowych wariacji) lub treści, które zawierają zarówno 3456, jak i consequat.

Funkcja 10: Zapytanie frazowe

Jak wyszukiwać dokładne frazy

String query = "\"ipsum dolor sit amet\"";
SearchResult result = index.search(query);

Wynik: Pobiera tylko dokumenty, które zawierają dokładną frazę ipsum dolor sit amet.

Praktyczne zastosowania

  1. E‑commerce Platforms – Użyj faceted search Java, aby filtrować produkty według rozmiaru, koloru i marki.
  2. Content Management Systems – Połącz boolean search Java z wyszukiwaniem fraz, aby napędzać zaawansowane narzędzia redakcyjne.
  3. Data Analysis Tools – Wykorzystaj date range search do generowania raportów i pulpitów nawigacyjnych opartych na czasie.

Częste problemy i rozwiązania

  • No results for date range search – Sprawdź, czy format dat w dokumentach odpowiada niestandardowemu DateFormat, który dodałeś.
  • Regex queries return too many hits – Dopracuj wzorzec lub ogranicz zakres wyszukiwania dodatkowymi kwalifikatorami pola.
  • Indexing errors not captured – Upewnij się, że obsługa zdarzeń jest podłączona przed wywołaniem index.add(...).

Najczęściej zadawane pytania

Q: Czy mogę łączyć date range search z innymi typami zapytań?
A: Zdecydowanie. Możesz połączyć klauzulę date range z operatorami boolean, filtrami faceted lub wzorcami regex w jednym ciągu zapytania.

Q: Czy muszę przebudować indeks po zmianie formatów dat?
A: Tak. Indeks przechowuje tokenizowane terminy; samo zaktualizowanie SearchOptions nie spowoduje ponownego tokenizowania istniejących danych. Przeindeksuj dokumenty po zmianie formatów.

Q: Jak GroupDocs.Search radzi sobie z dużymi indeksami?
A: Używa indeksowania przyrostowego i przechowywania na dysku, co pozwala skalować do milionów dokumentów przy niskim zużyciu pamięci.

Q: Czy istnieje limit liczby znaków wieloznacznych?
A: Znaki wieloznaczne są przetwarzane wydajnie, ale użycie wielu wiodących wieloznaczników (np. *term) może obniżać wydajność. Preferuj wieloznaczniki prefiksowe lub sufiksowe.

Q: Jaki model licencjonowania jest zalecany dla produkcji?
A: Licencja wieczysta lub subskrypcyjna od GroupDocs zapewnia aktualizacje, wsparcie oraz możliwość wdrożenia bez ograniczeń wersji próbnej.

Podsumowanie

Opanowując date range search oraz pełny zestaw zaawansowanych typów zapytań oferowanych przez GroupDocs.Search for Java, możesz tworzyć wysoce responsywne, bogate w funkcje doświadczenia wyszukiwania. Wdroż solidną obsługę błędów, dopracuj indeks i łącz zapytania, aby sprostać praktycznie każdemu scenariuszowi wyszukiwania. Zacznij eksperymentować już dziś i podnieś możliwości dostępu do danych w swojej aplikacji.


Ostatnia aktualizacja: 2025-12-16
Testowane z: GroupDocs.Search 25.4 (Java)
Autor: GroupDocs