SolrのCJKAnalyzerは内部でLuceneのCJKAnalyzerを利用しているのですが
実はこまったことにこのLuceneのCJKAnalyzerには重大なバグがあります。
まともに検索できません...
http://issues.apache.org/jira/browse/LUCENE-973
ここに日本人のToru Matsuzawaさんがパッチを上げてくれているのでそれを適用します。
MatsuzawaさんGJ!
バグの指摘は1年以上前にされたままずーっと放置されていたのですが
Solrのコミッターで「Apache Lucene入門」著者でもある
関口さんのフォローもあって
最近、対応される方向に進んでるみたいです。よかったですね。
Luceneのソースをダウンロードする
本来ならsvnから最新のソースを持ってきたいところなのですが
Solrの開発はLucene2.3.2で行われている一方
Luceneの方は既に2.4になっているので
最新のソースだとうまく動かない可能性があります。
このため2.3.2のコードを入手します。
% wget http://ftp.riken.jp/net/apache/lucene/java/lucene-2.3.2-src.tar.gz % tar xvfz lucene-2.3.2-src.tar.gz
パッチを入手して当てる
Matsuzawaさんのパッチを入手して当てます。
% cd lucene-2.3.2 % wget http://issues.apache.org/jira/secure/attachment/12363325/CJKTokenizer20070807.patch % patch -p0 < CJKTokenizer20070807.patch
jarを入れ替える
ビルドしたjarはlucene-2.3.2/build/contrib/analyzers/lucene-analyzers-2.3.jarにできます。
これをSolrに付属しているlucene-analyzers-2.3.2.jarと入れ替えます。
% cd ../../build/contrib/analyzers/ % cp lucene-analyzers-2.3.jar $TOMCAT_HOME/webapps/solr/WEB-INF/lib % rm $TOMCAT_HOME/webapps/solr/WEB-INF/lucene-analyzers-2.3.2.jar
後はtomcatを再起動すればOKです。
長くなったのでCJKAnalyzerを使ったインデキシングと検索はまた次回に。
ではでは。