Niestandardowy format daty Java | Wyszukiwanie zakresu dat z GroupDocs

Wyszukiwanie dokumentów według daty jest częstym wymaganiem — niezależnie od tego, czy budujesz system archiwizacji, narzędzie do raportowania finansowego czy portal zarządzania treścią. W tym samouczku poznasz techniki custom date format java przy użyciu GroupDocs.Search, obejmujące zapytania zakresu dat, definiowanie własnych wzorców oraz wskazówki, jak optimize search performance. Po zakończeniu będziesz mógł umożliwić użytkownikom pobieranie rekordów mieszczących się w dowolnym przedziale dat, bez względu na używany format.

Szybkie odpowiedzi

  • Jaka jest podstawowa klasa do indeksowania? Index from the com.groupdocs.search package.
  • Jak zdefiniować niestandardowy wzorzec daty? Użyj DateFormat z obiektami DateFormatElement oraz separatorem.
  • Czy mogę wyszukiwać przy użyciu zapytania tekstowego? Tak, składnia daterange(start ~~ end) działa bezpośrednio w ciągu zapytania.
  • Jakie współrzędne Maven są wymagane? com.groupdocs:groupdocs-search:25.4 (or newer).
  • Czy potrzebna jest licencja do rozwoju? Darmowa wersja próbna lub tymczasowa licencja wystarczy do testów; licencja komercyjna jest wymagana w środowisku produkcyjnym.

Co to jest custom date format java?

custom date format java informuje GroupDocs.Search, jak interpretować ciągi dat, które nie podążają za domyślnym wzorcem ISO (YYYY‑MM‑DD). Definiując własny wzorzec — na przykład MM/dd/yyyy lub dd‑MM‑yyyy — umożliwiasz silnikowi rozpoznawanie dat osadzonych w dokumentach używających formatów regionalnych lub starszych.

Dlaczego używać GroupDocs.Search do zapytań zakresu dat?

  • Szybkość: Built‑in indexing makes look‑ups O(log n).
  • Elastyczność: Supports both text‑based and object‑based query creation.
  • Obsługa wielu formatów: Handles PDFs, Word, Excel, plain text, and more without extra code.

Jak search documents by date z GroupDocs.Search

Poniżej znajdziesz przewodnik krok po kroku, który przeprowadzi Cię przez konfigurację biblioteki, indeksowanie plików oraz wykonywanie zarówno prostych, jak i zaawansowanych wyszukiwań zakresu dat.

Prerequisites

  • Java 8 lub nowszy zainstalowany.
  • Maven do zarządzania zależnościami.
  • Dostęp do licencji GroupDocs.Search (wersja próbna lub tymczasowa działa w środowisku deweloperskim).

Setting Up GroupDocs.Search for Java

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

Direct Download

Alternatywnie możesz pobrać najnowszą wersję bezpośrednio z GroupDocs.Search for Java releases.

Basic Initialization and Setup

Utwórz instancję Index i dodaj swoje dokumenty:

import com.groupdocs.search.*;

String indexFolder = "YOUR_INDEX_DIRECTORY";
String documentsFolder = "YOUR_DOCUMENTS_DIRECTORY";

// Creating an index in the specified folder
Index index = new Index(indexFolder);

// Indexing documents from the specified folder
index.add(documentsFolder);

Feature 1: Creating Date Range Search Queries

Using Text Form Query

Najprostszy sposób to osadzenie zakresu dat bezpośrednio w ciągu zapytania:

import com.groupdocs.search.*;
import com.groupdocs.search.results.*;

// Define directories (as previously shown)

Index index = new Index(indexFolder);
index.add(documentsFolder);

// Create a text-based query for the specified date range
String query1 = "daterange(2017-01-01 ~~ 2019-12-31)";
SearchResult result1 = index.search(query1);

Wyjaśnienie: The daterange syntax expects dates in YYYY‑MM‑DD. It returns all documents whose indexed dates fall within the interval.

Using Query Object

Aby uzyskać programistyczną kontrolę i własne parsowanie, zbuduj obiekt SearchQuery:

import com.groupdocs.search.*;
import com.groupdocs.search.options.*;
import com.groupdocs.search.results.*;

// Define directories (as previously shown)

Index index = new Index(indexFolder);
index.add(documentsFolder);

// Create a date range query using the Query API
SearchQuery query2 = SearchQuery.createDateRangeQuery(Utils.createDate(2017, 1, 1), Utils.createDate(2019, 12, 31));
SearchResult result2 = index.search(query2);

Wyjaśnienie: createDateRangeQuery pozwala podać obiekty java.util.Date, dając pełną elastyczność w obsłudze stref czasowych i specyficznych dla lokalizacji.

Feature 2: Specifying custom date format java Patterns

Setting Custom Date Formats

Zdefiniuj DateFormat, który pasuje do reprezentacji dat w Twoim dokumencie:

import com.groupdocs.search.*;
import com.groupdocs.search.options.*;
import com.groupdocs.search.results.*;

// Define directories (as previously shown)

Index index = new Index(indexFolder);
index.add(documentsFolder);

// Configure search options with custom date formats
SearchOptions options = new SearchOptions();
options.getDateFormats().clear(); // Remove default formats

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

// Create a custom date format pattern 'MM/dd/yyyy'
DateFormat dateFormat = new DateFormat(elements, "/");
options.getDateFormats().addItem(dateFormat);

String query = "daterange(01/01/2017 ~~ 12/31/2019)";
SearchResult result = index.search(query, options);

Wyjaśnienie: Poprzez usunięcie domyślnych formatów i dodanie DateFormat używającego / jako separatora, silnik rozumie teraz daty zapisane jako MM/dd/yyyy. Jest to niezbędne dla search documents by date w regionach, które preferują notację miesiąc‑dzień‑rok.

Tips to optimize search performance

  • Indeksuj przyrostowo: Add new files to the existing index instead of rebuilding from scratch.
  • Usuwaj przestarzałe dane: Periodically remove documents that are no longer needed.
  • Dostosuj ustawienia pamięci: Increase the JVM heap (-Xmx) when working with large indexes.

Common Issues and Solutions

  • Błędy parsowania dat: Verify that the document’s date strings exactly match the custom pattern you defined.
  • Brak wyników: Ensure the indexed fields contain date metadata; otherwise, the engine cannot match date queries.
  • Wyjątki dostępu do indeksu: Confirm that the indexFolder path is writable and not locked by another process.

Practical Applications

  1. Systemy archiwizacji – Retrieve records from a specific historical period.
  2. Zarządzanie treścią – Support regional date formats like dd/MM/yyyy for European audiences.
  3. Oprogramowanie finansowe – Filter transactions by fiscal quarter or year quickly.

Why This Matters

Wdrożenie obsługi custom date format java usuwa trudności związane z niejednolitymi reprezentacjami dat w dokumentach. Umożliwia handle multiple date formats w jednym indeksie, zapewniając użytkownikom końcowym dokładne wyniki, niezależnie od tego, jak daty zostały pierwotnie zapisane.

Next Steps

  • Explore more advanced query combinations using AND, OR, and NOT operators.
  • Experiment with custom analyzers if you need to index additional temporal metadata.
  • Review the performance tuning guide in the official documentation to scale your solution for millions of documents.

Frequently Asked Questions

Q: Jaka jest różnica między zapytaniami w formie tekstowej a zapytaniami opartymi na obiektach?
A: Forma tekstowa jest szybka i prosta, ale ograniczona do domyślnego formatu ISO; zapytania oparte na obiektach pozwalają podać obiekty Date i własne formaty, zapewniając większą elastyczność.

Q: Czy mogę wyszukiwać wiele zakresów dat w jednym zapytaniu?
A: Tak, połącz klauzule daterange przy użyciu operatorów logicznych takich jak AND lub OR, aby zbudować złożone zapytania.

Q: Czy niestandardowe formaty dat spowolnią wyszukiwanie?
A: Istnieje niewielki narzut związany z dodatkowymi operacjami parsowania, ale wpływ jest pomijalny przy typowych obciążeniach i jest rekompensowany przez zwiększoną dokładność.

Q: Czy GroupDocs.Search jest odpowiedni dla dużych wdrożeń?
A: Zdecydowanie tak. Przy odpowiednich strategiach indeksowania i dostrojeniu JVM, skaluje się do milionów dokumentów.

Q: Gdzie mogę znaleźć więcej przykładów w Javie?
A: Przeglądaj GroupDocs GitHub repository aby uzyskać dodatkowe przykłady i implementacje przypadków użycia.


Resources


Ostatnia aktualizacja: 2026-03-04
Testowano z: GroupDocs.Search Java 25.4
Autor: GroupDocs