Solr 3.5.0 で日本語対応化

Solrの日本語検索で形態素解析に対応させるため、日本語用tokenizerの"lucene-gosen"を利用した。
大雑把には、以下の流れ。

  1. gosenを取得し、
  2. schema設定で日本語のフィールドと関連付けて、
  3. 日本語フィールドのデータをimportとして、
  4. 検索してみる

lucene-gosenのインストール

ライブラリ置き場を作る。

$cd apache-solr-3.5.0/example/
$mkdir -p solr/lib

下記サイトから最新のgosen(v1.2.1が最新だったのでそれ)を取ってきて上記ディレクトリ(solr/lib)内に置く。

http://code.google.com/p/lucene-gosen/

左側にある"Featured"->"Downloads"->"lucene-gosen-1.2.1-ipadic.jar"から。

日本語fieldとtokenizeerの関連付け設定

solr/conf/schema.xmlでtext_jaで定義されたフィールドを日本語解析の対象に設定する。
(JapaneseTokenizerで形態素解析にGoSenを利用する。)

$ cd apache-solr-3.5.0/example/
$ emacs -nw solr/conf/schema.xml

設定内容は以下。
""の中にfieldTypeの設定が色々書いてるみたい。(詳細未確認)

...
  <types>
    ...
    <fieldType name="text_ja" class="solr.TextField" positionIncrementGap="100">
      <analyzer>
        <tokenizer class="solr.JapaneseTokenizerFactory" />
      </analyzer>
    </fieldType>
    ...
  </types>
...

text fieldで使用するfieldTypeの変更。text_generalからtext_jaに変更する。
(よく理解していないけど、とりあえず参考サイトの真似して、)独自field(nihongo)も追加して、検索indexを追加。

...
  ...
  <fields>
    ...
   <!--                                                                                                                                                                        
      <field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/>                                                                                   
   -->
   <field name="text" type="text_ja" indexed="true" stored="false" multiValued="true" />
   <field name="nihongo" type="text_ja" indexed="true" stored="true" />
   <copyField source="nihongo" dest="text"/>
 
    ...
  </fields>
  ...  
...

http://localhost:8983/solr/admin/analysis.jsp にアクセスして、Fieldにtext(またはnihongo)と入力し、FieldValueに適当な文を入力してAnalyzeボタンを押すと、形態素か移籍が実行され園結果が表示される。
下記トップページにsnapshotがある。
http://code.google.com/p/lucene-gosen/

起動及び、ドキュメント登録

起動

$cd apache-solr-3.5.0/example/
$java -jar start.jar  &

日本語ドキュメント登録
※参考サイトにあるのヘッダがあると登録できなかったので注意。

<!-- nihongo.xmlとして保存します -->
<add>
  <doc>
    <field name="id">NIHONGOTEST</field>
    <field name="nihongo">日本語のテストです。美しかった。美味しかった。楽しかった。腹減った。</field>
    <field name="name">迎撃システム</field>
    <field name="manu">unpopo mil.</field>
    <field name="cat">特許</field>
    <field name="cat">ミサイル</field>
    <field name="features">hoge fuga moge moga</field>
    <field name="weight">4</field>
    <field name="price">1.99</field>
    <field name="popularity">1</field>
    <field name="inStock">false</field>
    <field name="store">45.17614,-93.87341</field>
    <field name="manufacturedate_dt">2005-08-01T16:30:25Z</field>
  </doc>
</add>
$java -jar post.jar nihongo.xml

参考URL