稼働環境
MacBook Pro 15" (Unibody, Mid 2010), Core i7 2.66GHz, 8GB RAMMac OS X 10.6.5 Snow Leopard
1. 用意するもの
Solr 1.4.1 を、Apache Solr のサイトからダウンロード。 Sen 本体と Solr/Lucene で利用するための lucene-ja プロセッサを、java.net の Sen プロジェクトページからダウンロード2. Sen のインストール
ダウンロードした sen-1.2.2.1.zip を、適当なディレクトリ。例として、/Users/hoge/work へ解凍する。$ unzip sen-1.2.2.1.zip
$ cd sen-1.2.2.1
$ pwd
/Users/hoge/work/sen-1.2.2.1
デフォルトでは、EUC-JP を扱うようになっているため、UTF-8 へ設定変更する。
$ cd conf
$ vi sen.xml
charset が euc-jp となっている部分を utf-8 へ書き換える。
$ vi sen-processor.xml
charset が euc-jp となっている部分を utf-8 へ書き換える。
辞書を UTF-8 でビルドするため、プロパティファイルを変更する。
$ cd ../dic
$ vi dictionary.properties
sen.charset=EUC-JP を sen.charset=utf-8 へ書き換える。
その他は、そのままとする。
辞書をビルドする。
$ ant
アーカイブをダウンロードし解凍、ビルドを行う。
もし、sen 本体を再ビルドする場合は、1つ上のディレクトリへ戻り、ビルドを行う。
$ cd ..
$ pwd
/Users/hoge/work/sen-1.2.2.1
$ ant
jar ファイルを solr のライブラリディレクトリへコピーする。
$ cp lib/sen.jar <SOLR_INST_DIR>/example/solr/lib
# lib ディレクトリが無い場合には、作成する。
3. lucene-ja のインストール
sen は、日本語形態素解析エンジンであり、これを Solr/Lucene から利用するためには、Solr/Lucene のAPIを利用したプロセッサ(要は、ラッパーあるいは、コネクタ)が必要となり、これが lucene-ja.jar となる。ダウンロードした、lucene-ja-2.0test2.zip を適当なディレクトリ、例として /Users/hoge/work へ解凍
$ unzip lucene-ja-2.0test2.zip
$ cd lucene-ja
$ pwd
/Users/hoge/work/lucene-ja
jar ファイルを solr のライブラリディレクトリへコピーする。
$ cp lib/lucene-ja.jar <SOLR_INST_DIR>/example/solr/lib
4. Solr のインストール
ダウンロードした、apache-solr-1.4.1.tgz を適当なディレクトリ、例として、/Users/hoge/work へ解凍する。$ tar zxvf apache-solr-1.4.1.tgz
$ cd apache-solr-1.4.1
$ pwd
/Users/hoge/work/apache-solr-1.4.1
インスタンスは、example のものを利用するので、SOLR_HOME は、example ディレクトリとなる。
$ export SOLR_HOME=/Users/hoge/work/apache-solr-1.4.1/example
5. Solr の設定
schema.xml の設定$ cd $SOLR_HOME/solr/conf
$ vi schema.xml
以下のように sen 用のフィールドタイプを追加
<!-- This is an example of using sen for Japanese analysis and tokenization -->
<fieldType name="text_sen" class="solr.TextField">
<analyzer class="org.apache.lucene.analysis.ja.JapaneseAnalyzer"/>
</fieldType>
<!-- sen -->fields エントリは、とりあえずそのまま。先ずは、Solr が正常に起動することを確認し、Field Analysis 画面で sen の動作を確認する。
6. Solr の起動
上記 2. での sen インストールディレクトリ、例では、/Users/hoge/work/sen-1.2.2.1 を SEN_HOME として環境変数をセットする。$ export SEN_HOME=/Users/hoge/work/sen-1.2.2.1
Solr を起動する。
$ cd <SOLR_INST_DIR>
$ java -Dsen.home=$SEN_HOME -jar start.jar
と、ここで問題発生!
solr 1.4 が起動しない。
SEVERE: java.lang.IllegalAccessError
が出ている。
ということで、lucene-ja を Eclipse などで開いてみると。
以下のコンストラクタで、input=in としている部分があるので、コメントアウトする。
コンストラクタ内の super(in) により、TokenFilter の protected final TokenStream input に in がセットされるので、動作は、問題ないです。
lucene-ja/src/org/apache/lucene/analysis/ja/DigitFilter.java
lucene-ja/src/org/apache/lucene/analysis/ja/KatakanaStemFilter.java
lucene-ja/src/org/apache/lucene/analysis/ja/MonitorFilter.java
lucene-ja/src/org/apache/lucene/analysis/ja/POSFilter.java
さらに、以下のファイルのエンコードを UTF-8 へ変更し、
lucene-ja/src/org/apache/lucene/analysis/ja/NormalizeReader.java
public static final int[] CONVERSION_TABLE
を、
public static final char[] CONVERSION_TABLE
と変更。さらに、'-1'が値として定義されていたものを、'0'と変更。
lucene-ja.jar を再ビルドし、用意。ただし、build.xml が用意されていないので、Eclipse からエクスポートした。
TODO: Make a build.xml for lucene-ja.jar
ということで。
7. Admin GUI による動作の確認
Solr の Field Analysis 画面(Admin GUI の一部)へアクセスする。ポートの設定を変更していない場合は、以下の URL となる。http://localhost:8983/solr/admin/analysis.jsp
Field のプルダウンで、'type'を選び、テクストボックスへ、'text_sen'と入力する。
Field value (Index) の 'verbose output' チェックボックスをチェック。テキストボックスへ、定番の「すもももももももものうち」と入力。
'Analyze'ボタンをクリックする。
正常に動いている場合は、画面下部に、
Index Analyzer
org.apache.lucene.analysis.ja.JapaneseAnalyzer {}
と表示され、以下のような解析結果が表示される。
参考にしたサイト
http://d.hatena.ne.jp/knaka20blue/20080922/1222104683http://shower.human.waseda.ac.jp/~m-kouki/pukiwiki_public/96.html
No comments:
Post a Comment