Not only is the Internet dead, it's starting to smell really bad.:2006年05月中旬

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類はすべてそのまま使用できそうです。

@必要なもの

@作業手順

  1. 本体のtarballの展開
    $ tar zxf scarab-1.0-b20.tar.gz
    
  2. リソースバンドルのさしかえ
    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
    
  3. 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/
    
  4. 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/
    
  5. 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/
    
  6. 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
    
  7. ビルドプロパティファイルは後からいくらでも変更可能だけど
    scarab.database.type(使用するRDBMSの種類)だけは
    先に変更しとかないとbuild.xmlのcreate-dbターゲットが動かなくなるので注意。
    ちょっとこの辺Torqueはダサい。
    $ sed -e "s/^\(scarab\.database\.type=\).*$/\1postgresql/" \
    	minimal.properties >build.properties
    $ cd build
    $ ant
    
  8. 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
    
  9. 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
    
  10. データベース/テーブルの作成、マスタデータの投入
    明示的に文字コードを指定したい場合createdbコマンドで
    先にデータベースは作成しておくこと。
    $ createdb -h localhost -p 5432 -U pgsql -W ***** -E UTF-8 scarab
    
    あとは build.xml の "create-db" あるいは "create-empty-db" ターゲットでOK
    $ cd ../../../build
    $ ant create-db
    
  11. 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 をもうちょい真面目に考える