Friday, December 24, 2010

[備忘録] Solr 1.4 と cmecab-java で日本語検索環境を構築

Solr と cmecab-java を利用し、日本語形態素解析による検索環境の構築を行ったので、そのときの作業メモ。

稼働環境

MacBook Pro 15" (Unibody, Mid 2010), Core i7 2.66GHz, 8GB RAM
Mac OS X 10.6.5 Snow Leopard


1. MeCab のインストール

cmecab-java は、MeCab の JNI バインディングなので、MeCab がインストールされていることを前提としたものです。なので、何はともあれ、MeCab をインストール。
もし詳しい情報が必要な場合は、過去記事 [備忘録] Mac OS X 10.6 Snow Leopard への Cabocha インストール を参照。


2. Protocol Buffers のインストール

LocalProtobufTagger を利用しないのであれば必要ないのですが、StandardTagger との比較検討対象に考えている場合には、こちらもインストールします。
Google Code のプロジェクトページのダウンロードリストから、protobuf-2.3.0.tar.gz をダウンロードし、適当なディレクトリへ解凍します。例として、/Users/hoge/work とすると、
$ tar zxvf protobuf-2.3.0.tar.gz
$ cd protobuf-2.3.0
$ pwd
/Users/hoge/work/protobuf-2.3.0

お約束の configure & make です。私の場合、サードパーティアプリは、/opt/local へ入れる事にしているので、
$ configure --prefix=/opt/local
$ make
問題なくビルド出来たようであれば、
$ make check
これも問題なければ、インストールします。
$ make install
あるいは、環境や設定、権限によっては、sudo も必要です。
$ sudo make install

3. SCons のインストール

SCons も必要なので、インストールします。
SCons プロジェクトのダウンロードページから、scons-2.0.1.tar.gz をダウンロードし、適当なディレクトリへ解凍します。例として、/Users/hoge/work とすると、
$ tar zxvf scons-2.0.1.tar.gz
$ cd scons-2.0.1
$ pwd
/Users/hoge/work/scons-2.0.1

ここで、インストールします。
$ python setup.py install --prefix=/opt/local
あるいは、権限や環境によっては、sudo が必要です。
$ sudo python setup.py install --prefix=/opt/local

4. Solr のインストール

Sorl をインストールします。
例として、/Users/hoge/work/apache-solr-1.4.1 へ展開し、example ディレクトリをSOLR_HOMEとしました。


5. cmecab-java のインストール

ダウンロードした cmecab-1.7.tar.gz を適当なディレクトリ、例として /Users/hoge/work へ展開します。
$ tar zxvf cmecab-1.7.tar.gz
$ cd cmecab-1.7
$ pwd
/Users/hoge/work/cmecab-1.7

JNIをビルドするため、jni ディレクトリへ行き、scons によりビルドします。この時、SConstruct を、自分の環境にあうように編集します。
$ cd jni
$ vi SConstruct

もし、Mac OS X Snow Leopard を利用している場合、JAVA_HOME は、/usr/libexec/java_home を実行することにより取得できます。つまり、
export JAVA_HOME=`/usr/libexec/java_home`
となります。jni.h などのインクルードファイルは、
export JNI_DIR=$JAVA_HOME/../Headers
などと .bash_profile で定義しておくと良いかもしれないです。
また、上記1.、2. のことから、/opt/local/lib と /opt/local/include も参照される必要があることから、私の環境では、以下のように変更しました。

javahome = os.environ['JAVA_HOME']
incpath = [join(javahome, '../Headers'), '/opt/local/include', '/usr/include']
libpath = ['/usr/lib', '/opt/local/lib']

後は、プロジェクトページのインストールに関する解説通りで、問題なくインストールできます。
なお、libCMeCab.dylib と libCMeCab_protobuf.dylib を、/Users/hoge/work/lib へ置いたので、DYLD_LIBRARY_PATH (Linuxの場合は、LD_LIBRARY_PATH)は、以下のように設定しました。
export DYLD_LIBRARY_PATH=/Users/hoge/work/lib:/opt/local/lib:$DYLD_LIBRARY_PATH

6. Solr 側の設定

a) schema.xml の設定
Jetty を利用してのテストなので、cmecab-1.7.jar と protobuf-java-2.1.0.jar を $SOLR_HOME/solr/lib へコピー
その後、プロジェクトページの使用方法の「Solr から使用する」を参考にして、filedType 定義を追加。



7. Admin GUI による動作の確認

Solr の Field Analysis 画面(Admin GUI の一部)へアクセスする。ポートの設定を変更したので、以下の URL となる。
http://localhost:9983/solr/admin/analysis.jsp
Field のプルダウンで、'type'を選び、テクストボックスへ、'text_mecab' と入力する。
Field value (Index) の 'verbose output' チェックボックスをチェック。
テキストボックスへ、定番の「すもももももももものうち」と入力。
'Analyze'ボタンをクリックする。正常に動いている場合は、画面下部に、
Index Analyzer
org.apache.lucene.analysis.ja.JapaneseAnalyzer {}
と表示され、以下のような解析結果が表示される。




参考にしたサイト


No comments: