Solritas(Solr+Velocityデモ)の日本語化

Solrの配布物に同梱されているVelocityベースのサンプルクライアントは、Solritasという名前になっています。Solritasは、設定ファイルに手を入れることで簡単に動作を変更することができます。

Solrのサンプルの設定ファイルは、apache-solr-3.2.0/example/solr/conf 以下にありますが、solrconfig.xmlファイルの中の相対パス"../../”の記述を絶対パスに直すと、example以下のサンプル設定を他の場所に移動しても利用できるようになります。

VelocityデモであるSolritasの設定は、solrconfig.xmlファイル中のrequestHander name="/browse”エントリに記述されています。ここで、類似項目の検索(MoreLikeThis=mlt)に用いるフィールドとそれぞれの重み、ファセットナビゲーションの対象となるフィールド、強調表示の対象となるフィールドなどが指定されています。文書データの各フィールドの設定はschema.xml に記述されています。

検索窓の入力補完は、"name"フィールドの単語が対象になっていて、デフォルトでは英語ベースのスペース区切りになるので、日本語が書かれてあるとすべてつながってしまいます。日本語の単語で補完候補を出すには、lucene-gosenの単語分割を"text"フィールドに適用していれば、apache-solr-3.2.0/example/solr/conf/velocity にあるVelocityテンプレートファイルのうち、head.vm の 'terms.fl': 'name', を 'terms.fl': 'text', に変更し、suggest.vm の #foreach($t in $response.response.terms.name) を #foreach($t in $response.response.terms.text) にします。

VelocityのテンプレートファイルにはHTMLが記述できますが、ここに日本語を書いてもブラウザ上では文字化けして表示されてしまいます。デフォルトの状態ではVelocityの入出力がUTF-8ではないためなので、これを修正するためには、まず、solrconfig.xml に、v.propertiesの指定を追加します:

  <requestHandler name="/browse" class="solr.SearchHandler">
     <lst name="defaults">
       <str name="echoParams">explicit</str>

       < !-- VelocityResponseWriter settings -->
       <str name="wt">velocity</str>

       <str name="v.template">browse</str>
       <str name="v.properties">velocity.properties</str>

さらに、conf ディレクトリに次の内容の velocity.propertiesファイルを追加します:

input.encoding=UTF-8
output.encoding=UTF-8

VelocityResponseWriter - Solr Wiki

ここまで色々と言葉で説明してきましたが、これらの変更作業をMacPortsなどで実行できるようにしておけば、導入が簡単になりますね。MacPortsにはすでにapache-solrが登録されていますが、日本語にも対応しているとさらによいのですが…。