概要
Groovyは Fess のデフォルトスクリプト言語です。 Java仮想マシン(JVM)上で動作し、Javaとの高い互換性を持ちながら、 より簡潔な構文でスクリプトを記述できます。
基本構文
変数宣言
文字列操作
コレクション操作
条件分岐
ループ処理
データストアスクリプト
データストア設定でのスクリプト例です。
注釈
データストアスクリプトでは、 フィールド名=式 の各行がそれぞれ独立した1つの式として評価されます。 そのため、 import 文・複数行にわたる def 変数宣言・複数フィールドをまとめて設定する複数行の制御構文( if ブロックなど)は使用できません。 Javaクラスを利用する場合は完全修飾クラス名(FQCN)を用いて1つの式で記述し、条件分岐はフィールドごとに三項演算子で記述します(例: url=data.published ? data.url : null )。 また、ここで使用している変数名 data は説明用の例であり、実際の変数名は利用するデータストアコネクタによって異なります。詳細は データストアクロール を参照してください。
基本的なマッピング
URLの生成
コンテンツの加工
日付の処理
利用可能なオブジェクト
スクリプトの実行コンテキストによって、利用可能なオブジェクトが異なります。
| コンテキスト | オブジェクト | 説明 |
|---|---|---|
| 全コンテキスト | container | DIコンテナ。 container.getComponent("...") でコンポーネントにアクセスする際に使用 |
| スケジュールジョブ | executor | ジョブ実行制御( JobExecutor )。ジョブの停止サポートに必要 |
| データストア | (コネクタ固有) | 各データストアが提供するデータレコード変数。変数名はコネクタによって異なる |
| パスマッピング | url , matcher | 変換対象のURL文字列と正規表現のマッチ結果( Matcher )。 groovy: 接頭辞付きの置換設定で利用可能 |
| ドキュメントブースト | (ドキュメントフィールド) | 対象ドキュメントの各フィールドが変数として利用可能(条件式・ブースト値式で使用) |
スケジュールジョブスクリプト
スケジュールジョブで使用するGroovyスクリプトの例です。 スケジュールジョブでは container と executor が利用可能です。 executor をジョブの execute() メソッドに渡すことで、ジョブの停止制御が有効になります。
注釈
スケジュールジョブスクリプトは、スクリプト全体が1つのGroovyスクリプトとして評価されます。 このため、データストアスクリプトとは異なり、 import 文・複数行の def 宣言・複数行の制御構文を使用できます。 以降の「Javaクラスの使用」「Fessコンポーネントへのアクセス」「エラーハンドリング」「デバッグとログ出力」の例も、この完全なスクリプトのコンテキストを前提としています。
クロールジョブの実行
条件付きクロール
複数のジョブを順番に実行
Javaクラスの使用
Groovyスクリプト内では、Javaの標準ライブラリやFessのクラスを使用できます。
日付・時刻
ファイル操作
HTTP通信
警告
外部リソースへのアクセスはパフォーマンスに影響するため、 必要最小限に抑えてください。
Fessコンポーネントへのアクセス
container を使用してFessのコンポーネントにアクセスできます。
システムヘルパー
設定値の取得
検索の実行
エラーハンドリング
import 文はスクリプトの先頭に記述する必要があります( try-catch などのブロック内には記述できません)。 try-catch で例外を捕捉し、ジョブのエラーを制御できます。
デバッグとログ出力
ログ出力
デバッグ用の出力
ベストプラクティス
シンプルに保つ: 複雑なロジックは避け、読みやすいコードを心がける
nullチェック:
?.演算子や?:演算子を活用例外処理: 適切なtry-catchで予期しないエラーに対応
ログ出力: デバッグしやすいようにログを出力
パフォーマンス: 外部リソースアクセスを最小化
参考情報
スクリプティング概要 - スクリプティング概要
データストアクロール - データストア設定ガイド
スケジューラ - スケジューラー設定ガイド