Solr 3.5.0 で日本語対応化
Solrの日本語検索で形態素解析に対応させるため、日本語用tokenizerの"lucene-gosen"を利用した。
大雑把には、以下の流れ。
- gosenを取得し、
- schema設定で日本語のフィールドと関連付けて、
- 日本語フィールドのデータをimportとして、
- 検索してみる
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
設定内容は以下。
"
... <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