Apache Solr 3.3.0 で日本語検索できるようになるまでにしたこと

これからはSolrを使って全文検索サービスの時代だということで、Solrをダウンロードしてきてサンプルアプリケーションで日本語が扱えるようにしました。
調べつつやっているのでもしかしたら間違っていることを言ってるかもしれません。

Apache Solr 3.3.0のダウンロード〜解凍

http://lucene.apache.org/solr/ の左側のメニューから【Resources】->【Download】と辿り、最新版(3.3.0)をダウンロードします。
今回は apache-solr-3.3.0.tgz をダウンロードしました。

$ wget http://ftp.kddilabs.jp/infosystems/apache//lucene/solr/3.3.0/apache-solr-3.3.0.tgz
$ tar xvf apache-solr-3.3.0.tgz
$ # 適当なディレクトリに配置する(今回は~/Public/apache-solr/3.3.0/)
$ mkdir ~/Public/apache-solr
$ mv apache-solr-3.3.0 ~/Public/apache-solr/3.3.0

lucene-gosenのダウンロードと配置

日本語の形態素解析に必要なlucene-gosenをダウンロードして、solr/libに配置します。
http://code.google.com/p/lucene-gosen/ から最新版のlucene-gosenをダウンロードします。
今回は lucene-gosen-1.1.1-ipadic.jar をダウンロードしました。

$ # exampleに移動
$ cd ~/Public/apache-solr/3.3.0/example
$ mkdir solr/lib
$ cd solr/lib
$ wget http://lucene-gosen.googlecode.com/files/lucene-gosen-1.1.1-ipadic.jar

schema.xmlの編集

solr/conf/schema.xmlを編集してlucene-gosenを使えるように設定します。

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

これでfieldの型としてtext_jaが使えるようになります。
引き続きsolr/conf/schema.xmlを編集してtextフィールドの型を変更します。

  ...
  <fields>
    ...
    <!-- 547行目付近 -->
    <field name="text" type="text_ja" indexed="true" stored="false" multiValued="true" />
    ...
  </fields>
  ...    

ついでに独自のフィールドを追加して、検索のインデックスに追加されるようにします。

  ...
  <fields>
    ...
    <field name="nihongo" type="text_ja" indexed="true" stored="true" />
    <copyField source="nihongo" dest="text"/>
    ...
  </fields>
  ...    

もう一息

Solr起動

exampleのディレクトリにあるstart.jarを実行します。

$ cd ~/Public/apache-solr/3.3.0/example
$ java -jar start.jar

サンプルドキュメント登録

exampledocsにあるxmlファイルを参考に、ドキュメントを作成・追加します。

<!-- nihongo.xmlとして保存します -->
<?xml version="1.0" encoding="UTF-8"?>
<add>
  <doc>
    <field name="id">NIHONGOTEST</field>
    <field name="nihongo">日本語のテストです</field>
  </doc>
</add>
$ cd exampledocs
$ ./post.sh nihongo.xml

確認

http://localhost:8983/solr/admin/ にアクセスして、確認します。
まんなかのでっかいボックスに「日本語」と入力して、検索できたらOK!

もっと詳しく見たかったら、[ANALYSIS]というリンクをたどって、次のように入力して確認できます。

Field type : text_ja
Field value : すもももももももものうち
verbose output にチェックを入れる