2006/05/18(Thu)
○ Scarabの導入
@2007/07/18 追記
QuickSearch(一行検索)で日本語が使えないのはjakarta-tomcat-4.1.29の問題です。
調査結果
1
2
3
4。なので最新のtomcat4を使いましょう。
@2007/04/26 追記
Torqueが3.2になった為、PostgreSQLで不具合が起きるみたい。
/diary/?20070426#26
あとlucene + senによる日本語検索は、tomcatを起動する時に
$ LANG=ja_JP.eucJP; export LANG
のように日本語ロケールを設定しないと上手く動かないようです。
(「Quick Search」による一行検索はそれでもダメ、「高度な検索」を使ってください)
@2007/04/04 追記
新バージョン(scarab-0.21)がリリースされていますが
以下のpatch類はすべてそのまま使用できそうです。
@必要なもの
- Scarab 本体
http://scarab.tigris.org/files/documents/11/24092/scarab-1.0-b20.tar.gz - Scarab リソースバンドル日本語訳
http://prdownloads.sourceforge.jp/scarab-ja/15461/scarab-l10n-0.0.5.tar.gz
/distfiles/scarab/ScarabBundle_ja.properties - Lucene-ja + Sen (日本語検索用)
https://sen.dev.java.net/files/documents/1373/11260/lucene-ja-1.4.3sen1.2-2.zip
https://sen.dev.java.net/files/documents/1373/31864/sen-1.2.2.1.zip
/distfiles/scarab/scarab-1.0-b20-lucene-analyzer.patch - fulcrum-upload ファイル名 文字化け 対策版
/distfiles/scarab/fulcrum-upload-1.0.3_i18n.jar - commons-email From: 文字化け + SMTP AUTH + over SSL 対策版
/distfiles/scarab/commons-email-1.0-rc5-smtpauth+ssl+i18n.jar - Java Mail API最新版(SMTP AUTH + over SSLが必要な場合)
http://java.sun.com/products/javamail/downloads/index.html より javamail-1_4.zip
@作業手順
- 本体のtarballの展開
$ tar zxf scarab-1.0-b20.tar.gz
- リソースバンドルのさしかえ
http://scarab-ja.sourceforge.jp/ の日本語リソースバンドルは項目に不足があるので
コメントの編集 + 保存などで例外が発生しないよう、うちの対策版を使ってください。$ tar xzf scarab-l10n-0.0.5.tar.gz InitDbScarabBundle_ja.properties $ cd scarab-1.0-b20/ $ rm src/conf/classes/*_ja.properties $ cp ../*_ja.properties src/conf/classes
- Java Mail APIのさしかえ
$ cd ../ $ unzip javamail-1_4.zip $ cd scarab-1.0-b20/ $ rm www/repository/javamail/jars/javamail-1.3.jar $ cp ../javamail-1.4/mail.jar www/repository/javamail/jars/
- commons-emailのさしかえ
$ rm www/repository/commons-email/jars/commons-email-0.1-dev.jar $ cp ../commons-email-1.0-rc5-smtpauth+ssl+i18n.jar www/repository/commons-email/jars/
- fulcrum-uploadのさしかえ
$ rm www/repository/fulcrum/jars/fulcrum-upload-1.0.3.jar $ cp ../fulcrum-upload-1.0.3_i18n.jar www/repository/fulcrum/jars/
- lucene のさしかえと patch あて
$ cd ../ $ unzip /cygdrive/c/lucene-ja-1.4.3sen1.2-2.zip $ unzip /cygdrive/c/sen-1.2.2.1.zip $ cd scarab-1.0-b20/ $ rm www/repository/lucene/jars/lucene-1.2.jar $ cp ../lucene-ja/lib/lucene-1.4.3.jar \ ../lucene-ja/lib/lucene-ja.jar \ www/repository/lucene/jars/ $ cp ../sen-1.2.2.1/lib/sen.jar www/repository/lucene/jars/ $ patch -p1 -E -l < ../scarab-1.0-b20-lucene-analyzer.patch
- ビルドプロパティファイルは後からいくらでも変更可能だけど
scarab.database.type(使用するRDBMSの種類)だけは
先に変更しとかないとbuild.xmlのcreate-dbターゲットが動かなくなるので注意。
ちょっとこの辺Torqueはダサい。$ sed -e "s/^\(scarab\.database\.type=\).*$/\1postgresql/" \ minimal.properties >build.properties $ cd build $ ant
- Sen用のIPA辞書の作成
$ cd ../../sen-1.2.2.1/dic $ perl -pi -e "s|/usr/bin/perl|/usr/pkg/bin/perl|g" build.xml *.pl $ ant $ cd ../../scarab-1.0-b20/ $ mkdir target/scarab/WEB-INF/dic $ cp ../sen-1.2.2.1/dic/dictionary.properties \ ../sen-1.2.2.1/dic/*.csv ../sen-1.2.2.1/dic/*.sen \ target/scarab/WEB-INF/dic $ cp ../sen-1.2.2.1/conf/*.xml target/scarab/WEB-INF/conf
- custom.propertiesの編集
うちの環境ではこんな感じ。$ cd target/scarab/WEB-INF/conf
# データベースの設定 scarab.database.host=localhost scarab.database.port=5432 scarab.database.name=scarab scarab.database.username=scarab scarab.database.password=******** scarab.database.admin.username=pgsql scarab.database.admin.password=******** # ブラウザに入力されたテキスト中、locale.default.charsetに # 存在しない文字は Unicode 実体参照に変換されるけれども # locale.default.charset -> scarab.email.encoding # への変換時は特に考慮してないっぽい、よって同じにした方が無難。 # # あと画面右上の「(一行)テキスト検索」は、文字コード変換が # 適切に行われていないようで、locale.default.charset=UTF-8でないと動作しない(調査中...) # locale.default.charset=ISO-2022-JP scarab.email.encoding=${locale.default.charset} # Excel出力はWindows-31Jである必要がある。 # ただしXML出力もWindows-31Jになることに注意。 scarab.dataexport.encoding=Windows-31J # タイムゾーンの設定 scarab.timezone=Asia/Tokyo # メールの設定 scarab.email.domain=example.jp scarab.email.default.fromName=Scarab Administrator scarab.email.default.fromAddress=scarab@${scarab.email.domain} scarab.email.register.fromName=${scarab.email.default.fromName} scarab.email.register.fromAddress=${scarab.email.default.fromAddress} scarab.email.forgotpassword.fromName=${scarab.email.register.fromName} scarab.email.forgotpassword.fromAddress=${scarab.email.register.fromAddress} scarab.email.archive.toAddress=scarab@${scarab.email.domain} # SMTP AUTH + over SSLを使用する system.mail.host=smtps.${scarab.email.domain} system.mail.smtp.from=${scarab.email.default.fromAddress} system.mail.transport.protocol=smtps system.mail.smtps.host=${system.mail.host} system.mail.smtps.port=465 system.mail.smtps.auth=true system.mail.smtps.user=scarab system.mail.smtps.pwd=***** system.mail.smtps.from=${system.mail.smtp.from} # Luceneで使用するAnalyzerの実装クラス名 scarab.lucene.analyzer.class=org.apache.lucene.analysis.ja.JapaneseAnalyzer system.sen.home=/somewhere/scarab-1.0-b20/target/scarab/WEB-INF
- データベース/テーブルの作成、マスタデータの投入
明示的に文字コードを指定したい場合createdbコマンドで
先にデータベースは作成しておくこと。
あとは build.xml の "create-db" あるいは "create-empty-db" ターゲットでOK$ createdb -h localhost -p 5432 -U pgsql -W ***** -E UTF-8 scarab
$ cd ../../../build $ ant create-db
- tomcatの起動
$ cd ../tomcat/bin $ ./startup.sh
以上です。
@TODO(たぶん作業はしないけど)
- 検索まわりは Lucene べったりなんで、Hyper EstraierのJava bindingとかも使えるといいね
- commons-email イラネ
- Turbin Configuration で ${foo.${bar}} とか書けるともっと設定ファイルスッキリすんじゃ?
- Torque ステステ、javax.persistence.* に書き換えようぜー
- UTF-8 前提で破綻しかかってる i18n/m17n をもうちょい真面目に考える