FessでRedmineをクロールする場合の設定が公式ドキュメントに載っている。
公式ドキュメントでは、ウェブクロールでクロールする手順になっている。
では、データストアクロールでのクロールはどのような手順になるのかと思い、試してみた。
環境など
- Redmine
- バージョン 3.3.4
- DBはPostgreSQL
- Fess
- バージョン 12.0.1
- CentOSにrpmでインストール
クロール対象はRedmineのチケットのみとする。
設定1. JDBCドライバの配置
こちらからPostgreSQLのJDBCドライバをダウンロードする。
ダウンロードしたJDBCドライバを<Fessのインストールディレクトリ>/app/WEB-INF/lib/
(RPMでインストールした場合は/usr/share/fess/app/WEB-INF/lib/
)に配置する。
設定2. データストアクロールの設定
「パラメータ」欄
driver=org.postgresql.Driver
url=jdbc:postgresql://<Redmineのホスト名>:5432/redmine?& ssl=false?charSet=UTF-8
username=<RedmineのDBにアクセスするためのユーザ名>
password=<RedmineのDBにアクセスするためのパスワード>
sql=select id, subject, description, updated_on from issues
ポイント
- 「sql」にRedmineのDBのissuesテーブルからチケットのID、題名、説明、更新日時を取得するSQLを指定する
「スクリプト」欄
url="http://<Redmineのホスト名とパス>/issues/" + id
host="<Redmineのホスト名>"
site="<Redmineのホスト名>"
title="【Redmine - チケット】" + subject
content=description
cache=description
digest=description
anchor=
content_length=description.length()
last_modified=updated_on.substring(0,10) + "T" + updated_on.substring(11,23) + "Z"
location=
latitude=
longitude=
ポイント
- SQLで取得するチケットのID、題名、説明、更新日時を各パラメータに当て込む
動作確認
以下のようなチケットを用意した状態でFessのクローラを実行する。
クロール完了後、チケットの説明欄にある文言をFessで検索すると、Redmineのチケットがヒットする。
課題
上記の設定では、チケットの題名と説明等のみしかFessに登録していない。
その他の項目(カスタムフィールドや注釈など)でも検索をしたい場合は、それらをクロールするよう、データストアクロールの設定を工夫する必要がある。
Tips
クローラのデバッグログを出力する
意図した通りにクロールがされていない場合は、クローラのデバッグログを出力すると、原因がわかる場合がある。
デバッグログを出力するには、ジョブの設定を編集し、logLevelに"debug"を指定する。
この設定により、「システム情報 > ログファイル」から参照できる「fess-crawler.log」にデバッグログが出力されるようになる。