カスタム日付フォーマット Java | GroupDocs を使用した日付範囲検索

日付で文書を検索することは頻繁な要件です—アーカイブシステム、財務レポートツール、コンテンツ管理ポータルを構築する場合でも。本チュートリアルでは GroupDocs.Search を使用した custom date format java の手法を学び、日付範囲クエリ、カスタムパターン定義、そして optimize search performance のヒントをカバーします。最後まで読めば、ユーザーが使用する形式に関係なく、任意の日付区間に該当するレコードを取得できるようになります。

クイック回答

  • インデックス作成の主要クラスは何ですか? Indexcom.groupdocs.search パッケージからです。
  • カスタム日付パターンはどう定義しますか? DateFormatDateFormatElement オブジェクト、そして区切り文字を使用します。
  • テキストクエリで検索できますか? はい、daterange(start ~~ end) 構文はクエリ文字列で直接使用できます。
  • 必要な Maven 座標はどれですか? com.groupdocs:groupdocs-search:25.4(またはそれ以降)。
  • 開発にライセンスは必要ですか? テストには無料トライアルまたは一時ライセンスで十分です。商用環境では商用ライセンスが必要です。

custom date format java とは何ですか?

custom date format java は、GroupDocs.Search に対してデフォルトの ISO パターン(YYYY‑MM‑DD)に従わない日付文字列の解釈方法を指示します。MM/dd/yyyydd‑MM‑yyyy のように独自のパターンを定義することで、地域固有やレガシー形式の日付が埋め込まれた文書をエンジンが認識できるようになります。

なぜ GroupDocs.Search を日付範囲クエリに使用するのか?

  • 速度: 組み込みのインデックスにより検索は O(log n) で実行されます。
  • 柔軟性: テキストベースとオブジェクトベースのクエリ作成の両方をサポートします。
  • マルチフォーマットサポート: PDF、Word、Excel、プレーンテキストなどを追加コードなしで処理します。

GroupDocs.Search を使用した search documents by date の方法

以下に、ライブラリのセットアップ、ファイルのインデックス作成、シンプルおよび高度な日付範囲検索の実行手順をステップバイステップで示します。

前提条件

  • Java 8 以上がインストールされていること。
  • 依存関係管理に Maven を使用。
  • GroupDocs.Search のライセンスへのアクセス(開発にはトライアルまたは一時ライセンスで可)。

Setting Up GroupDocs.Search for Java

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>

直接ダウンロード

または、最新バージョンを直接 GroupDocs.Search for Java releases からダウンロードできます。

基本的な初期化とセットアップ

Index インスタンスを作成し、ドキュメントを追加します:

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

機能 1: 日付範囲検索クエリの作成

テキスト形式クエリの使用

最も簡単な方法は、クエリ文字列に日付範囲を直接埋め込むことです:

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

説明: daterange 構文は YYYY‑MM‑DD 形式の日付を期待します。インデックスされた日付がその区間に入っているすべての文書を返します。

クエリオブジェクトの使用

プログラムから制御し、カスタムパースを行うには、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);

説明: createDateRangeQuery を使用すると java.util.Date オブジェクトを渡すことができ、タイムゾーンやロケール固有の処理に対して完全な柔軟性を提供します。

機能 2: custom date format java パターンの指定

カスタム日付フォーマットの設定

ドキュメントの日付表現に合わせた DateFormat を定義します:

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

説明: デフォルトのフォーマットをクリアし、区切り文字として / を使用する DateFormat を追加することで、エンジンは MM/dd/yyyy 形式の日付を認識できるようになります。月が先行する表記を好む地域で search documents by date を行う際に必須です。

optimize search performance のヒント

  • インデックスをインクリメンタルに: 既存のインデックスに新しいファイルを追加し、最初から再構築しない。
  • 古いデータの削除: 定期的に不要な文書を削除します。
  • メモリ設定の調整: 大規模インデックスを扱う際は JVM ヒープ (-Xmx) を増やします。

よくある問題と解決策

  • 日付パースエラー: ドキュメントの日付文字列が定義したカスタムパターンと完全に一致しているか確認してください。
  • 結果が欠如: インデックスされたフィールドに日付メタデータが含まれていることを確認してください。含まれていないと、エンジンは日付クエリにマッチできません。
  • インデックスアクセス例外: indexFolder パスが書き込み可能で、他のプロセスにロックされていないことを確認してください。

実用的な応用例

  1. アーカイブシステム – 特定の歴史的期間のレコードを取得。
  2. コンテンツ管理 – ヨーロッパ向けに dd/MM/yyyy などの地域日付フォーマットをサポート。
  3. 金融ソフトウェア – 会計四半期や年単位で取引を迅速にフィルタリング。

なぜ重要か

custom date format java の処理を実装することで、文書間で一貫性のない日付表現を扱う際の摩擦がなくなります。単一のインデックスで handle multiple date formats を可能にし、ユーザーは元の記録形式に関係なく正確な結果を得られます。

次のステップ

  • ANDORNOT 演算子を使用した、より高度なクエリ組み合わせを探求してください。
  • 追加の時間メタデータをインデックスする必要がある場合は、カスタムアナライザーを試してください。
  • 公式ドキュメントのパフォーマンスチューニングガイドを確認し、数百万件の文書にスケールできるようにしてください。

よくある質問

Q: テキスト形式とオブジェクトベースの日付クエリの違いは何ですか?
A: テキスト形式は迅速で簡単ですが、デフォルトの ISO 形式に限定されます。オブジェクトベースのクエリは Date オブジェクトやカスタムフォーマットを提供でき、柔軟性が向上します。

Q: 単一のクエリで複数の日付範囲を検索できますか?
A: はい、daterange 条項を ANDOR などの論理演算子と組み合わせて複雑なクエリを構築できます。

Q: カスタム日付フォーマットは検索速度を低下させますか?
A: 追加のパースに若干のオーバーヘッドはありますが、通常のワークロードでは影響はほとんどなく、精度向上のメリットが上回ります。

Q: GroupDocs.Search は大規模展開に適していますか?
A: もちろんです。適切なインデックス戦略と JVM のチューニングにより、数百万件の文書にスケールします。

Q: さらに多くの Java の例はどこで見つけられますか?
A: 追加のサンプルやユースケース実装については、GroupDocs GitHub repository をご覧ください。


リソース


最終更新日: 2026-03-04
テスト環境: GroupDocs.Search Java 25.4
作者: GroupDocs