Buzz away
Sunday, February 10, 2013
Monday, December 19, 2011
Mac OS X Lion への MeCab (0.99pre2) のインストール
開発環境のOSを、Lion (10.7.2) へアップデートしたのを機に、MeCab の最新版(0.99pre2)をインストールしてみました。
前回の Snow Leopard への Cabocha のインストール の時と違い、いきなり iconv が参照出来ないと怒られて Make が通らないので、configure のオプションで、--with-libiconv-prefix=/usr のように指定し、なんとかコンパイル完了。今回の configure オプションは、以下の通りとしました。
その後の make check も無事パスし、いざインストールと思い、sudo make install するも、 Permission denied でインストール出来ず。。。 時間も無かったので、ファイルを手動コピーでなんとかしてしまったものの、気持ちが悪いので、後ほど時間を作って原因を調べてみたいと思います。
前回の Snow Leopard への Cabocha のインストール の時と違い、いきなり iconv が参照出来ないと怒られて Make が通らないので、configure のオプションで、--with-libiconv-prefix=/usr のように指定し、なんとかコンパイル完了。今回の configure オプションは、以下の通りとしました。
./configure --prefix=/opt/local --with-charset=utf8 --with-libiconv-prefix=/usr
その後の make check も無事パスし、いざインストールと思い、sudo make install するも、 Permission denied でインストール出来ず。。。 時間も無かったので、ファイルを手動コピーでなんとかしてしまったものの、気持ちが悪いので、後ほど時間を作って原因を調べてみたいと思います。
Wednesday, November 30, 2011
Solr 3.5 リリース! ということで、リリースノートを日本語訳してみました
Solr 3.5 がリリースされました。CHANGES.TXT に含まれる内容を翻訳してみました。内容を見なす時間が無かったのでドラフトということでご容赦下さい。なお、誤訳、日本語としておかしな点がありましたら、ご指摘ください。なお、3.4 -> 3.5 の分のみの翻訳ですが、そのうちそれ以前の分も翻訳するかも知れません。
Apache Solr リリースノート
はじめに
------------
Solrは、Apache Luceneプロジェクトが提供する人気の高い、非常に高速なエンタープライズ検索プラットフォームです。主な機能として全文検索、ヒットハイライト、ファセット検索、動的なクラスタリング、ダータベースとの接続、そしてWordやPDFなどのリッチドキュメントの取り扱いなどが含まれます。 Solr は、非常にスケーラブルで、分散検索とインデックスのレプリケーション機能を提供しています。そして、世界の大規模なインターネットサイトの多くの検索とナビゲーション機能を強力にしています。
SolrはJavaで書かれ、スタンドアロンの全文検索サーバーとしてTomcat などのサーブレットコンテナーで稼働します。 SolrはLucene Java検索ライブラリを全文検索インデキシングと検索のコアとして利用しています。そして、REST風のHTTP/XMLとJSON APIによって、ほとんど全てのプログラム言語から簡単に利用できます。Solrの高度な設定機能によって、Javaによるプログラム作成を行わなくても、多くのタイプのアプリケーションに対応することが可能です。さらに、幅広いプラグインアーキテクチャーによって、より高度なカスタマイズが必要な際にも対応できます。
利用を始めるにあたっての、より多くの情報については、README.txt と http://lucene.apache.org/solr をご覧下さい。
================== 3.5.0 ==================
主要コンポーネントのバージョン
---------------------
Apache Tika 0.10
Carrot2 3.5.0
Velocity 1.6.4 and Velocity Tools 2.0
Apache UIMA 2.3.1
Solr 3.4 からのアップグレード
----------------------
* VelocityResponseWriter は、コアに含まれていません。利用する場合には、JAR と関連する
ファイルを追加(<lib> あるいは、solr/home 以下の lib に含める)し、solrconfig.xml に以下の
ように記述する必要があります。
<queryResponseWriter name="velocity" class="solr.VelocityResponseWriter"/>
新機能
----------------------
* SOLR-2749: FastVectorHighlighter へバウンダリースキャナー(境界認識の仕組み)を
追加。<boundaryscanner/> を名称とともに solrconfig.xml へ定義し、パラメータ
hl.boundaryScanner=name により、その名称を指定することによって利用します。
(koji)
* SOLR-2066, SOLR-2776: 分散グルーピングのサポートを追加しました。
(Martijn van Groningen, Jasper van Veghel, Matt Beaumont)
* SOLR-2769: 新しい Hunspell stemmer のファクトリーを追加したことにより、99言語の
ステミングが可能になりました。
(janhoy, cmale)
* SOLR-1979: 新しいコントリビューション"langid"として、Update Processor による
言語判別機能を追加しました。
Tika の LanguageIdentifier か Cybozu language-detection library のどちらかを利用できます。
(janhoy, Tommaso Teofili, gsingers)
* SOLR-2818: SolrJ でのレンジファセットで、before/after の件数のレスポンス解析サポート
を追加しました。
(Martijn van Groningen 経由で Bernhard Frauendienst)
* SOLR-2276: PhoneticFilterFactory へ、Cologne Phonetic サポートを追加しました。
(rmuir を経由して Marc Pompl)
* SOLR-1926: hl.q パラメータを追加しました。(koji)
* SOLR-2881: 数値型で sortMissingFirst/Last をサポートしました。これには、Trie 型と
Date 型が含まれます。
(Ryan McKinley, Mike McCandless, Uwe Schindler, Erick Erickson)
* SOLR-1023: StatsComponent で date フィールドと string フィールドをサポートしました。
(Chris Male, Mark Holland, Gunnlaugur Thor Briem, Ryan McKinley)
* SOLR-2578: ReplicationHandler のバックアップコマンドが 'numberToKeep' パラメータを
サポートしました。これにより、最近の N 件のバックアップのみを保持し、それ以外の
ものを削除出来ます。
(hossman 経由で James Dyer)
最適化
----------------------
* SOLR-2742: SolrJ: 全ての add() メソッドがオプションパラメータとして commitWithinMs
を提供し、開発者がより簡便にこの機能を利用できるようにしました。 (janhoy)
バグ修正
----------------------
* SOLR-2762: (4.x 系からのバックポート): FSTLookup がリクエストよりも少なく重複
あるいは1件の結果を返していました。
(David Smiley, Dawid Weiss)
* SOLR-2748: CommitTracker が commitWithin または maxTime 指定による autoCommit
を利用している際に、頻繁に commit を行うことで新しいサーチャーが登録されるまで、
追加をブロックすることがありました。(yonik)
* SOLR-2726: Suggester とともに spellcheck.q 利用時に NullPointerException が発生して
いたのを修正しました。
(Bernd Fehling, rmuir 経由で valentin)
* SOLR-2772: 0001-1000 の期間の日付パース/フォーマットを修正しました。
(hossman)
* SOLR-2763: サイズ0のファイルをマルチパートフォームで POST した際に、
Extracting Update Request Handler が例外を発生し、400 を返していました。
(janhoy)
* SOLR-2780: 複数選択ファセットで、group.truncate パラメータを扱わない問題を
修正しました。
(Martijn van Groningen, Ramzi Alqrainy)
* SOLR-2791: Replication: 通常の poll では無く、fetchindex コマンドによりレプリケーション
が始まっていた場合に、abortfetch コマンドが効きませんでした。(shalin 経由で Yury Kats)
* SOLR-2861: 非常に稀なコミット時のレースコンディションにより、NullPointerException
が発生する問題を修正しました。(yonik)
* SOLR-2829: 間違った equals メソッドにより、ご判定される問題を修正しました。
(Yonik Seeley, Hossman, Erick Erickson. Marc Tinnemeyer がバグを発見)
* SOLR-2902: SpellCheckResponse において照合リストのパースが間違っていたため、
レスポンス中の照合結果の件数が間違っていました。
(Bastiaan Verhoef, Simon Willnauer 経由で James Dyer)
その他の変更点
----------------------
* SOLR-2750: "update.chain"と"update.param"の両方があらゆるところで利用できるように
しました。SOLR-2105 もご覧ください。(Mark Miller, janhoy)
* LUCENE-3410: WordDelimiterFilter コンストラクタが複数の int パラメータをブーリアン
として受け取っていたのに代わり、優先コンストラクタは、1つの int 型ビットフィールド
変数を受け取ります。(Chris Male)
* SOLR-2758: ConcurrentLRUCache を、SolrJ モジュールの org.apache.solr.common.util
パッケージから、Solr-Core モジュール org.apache.solr.util パッケージへ移動しました。
(Steve Rowe 経由で David Smiley)
* SOLR-2756: Maven 設定: 未使用の zookeeper 依存関係の整理を行いました。
geronimo-stax-api への依存関係は、Java 1.5 環境下でのみ有効となります。
org.codehaus.woodstox:wstx-asl から推移的なstax:stax-api への依存は除かれます。
(David Smiley, Steve Rowe)
* SOLR-2770: 'ant generate-maven-artifacts' は、Solr 固有の jdk15-compiled
carrot2-core 依存関係の maven artifact を生成します。(Steve Rowe)
* SOLR-2766: solrj と test-framework それぞれの javadoc サイトをパッケージする
ようにしました。
(Steve Rowe, Mike McCandless)
* SOLR-2771: Solr モジュールのテストが solr-core テストクラスへ依存するべきでない
ことから、BufferingRequestProcessor を solr-core テストから test-framework へ移動
しました。これにより、Solr Cell モジュールから、同プロセッサーが利用できます。
(janhoy, Steve Rowe)
* LUCENE-3457: commons-compress を 1.2 へアップグレードしました。(Doron Cohen)
* SOLR-2757: min() および max() 関数において、任意の数の ValueSource をサポート
しました。
(hossman 経由で Bill Bell)
* SOLR-2372: Tika 0.10 へアップグレードしました。(janhoy)
* SOLR-2792: ケースインセンシティブな Hunspell ステミングをサポートしました。
(janhoy, rmuir)
* SOLR-2588: VelocityResponseWriter を SolrCore の依存モジュールから外すため、
contirb モジュールへと戻しました。(Erik Hatcher)
* SOLR-2862: Carrot2 によるクラスタリング機能拡張利用時に、辞書資源の場所を
ログへ明示的に出力するようにしました。このために、IResource と IResourceLookup
の Solr での実装を修正しています。(Dawid Weiss)
* SOLR-2849: Maven POM の依存関係を修正しました。
(Steve Rowe 経由で David Smiley)
* SOLR-2591: solrconfig.xml から commitLockTimeout オプションを削除しました。
(Martijn van Groningen 経由で Luca Cavanna)
* SOLR-1123: JSONResponseWriter が Content-Type として新しい application/json を
デフォルトで返すように変更しました。しかし、Content-Type は上書き可能で、
設定例では、text/plain がセットされています。(Uri Boness, Chris Male)
Friday, September 16, 2011
Lucene/Solr 3.4 リリース!
気がついたら、Lucene/Solr 3.4 がリリースされていました。3.3 のリリースからそれほど間のないタイミングでのアップデートということで、キャッチアップするだけでも大変な状況です。
自分用のメモ代わりに、ニュースリリースを簡単に和訳してみました。
Lucene 3.4/Solr 3.4 がリリースされました。Lucene PMC によるニュースリリースによると、現在 Lucene/Solr 3.1, 3.2 あるいは、3.3 を利用しているユーザは、アップデートすることを強く推奨しています。これは、機能ハイライトにあるように、OS あるいは、コンピューター のクラッシュ/電源消失により、インデックスが壊れてしまうバグが修正(LUCENE-3418)されているからです。無停電電源のある環境であれば比較的安全なのかも知れませんが、いつそのバグを踏んでしまうか分かりませんし、出来るだけ早めのアップデートを検討した方が良いかもしれません。
Lucene 機能ハイライト:
Solr 機能ハイライト:
自分用のメモ代わりに、ニュースリリースを簡単に和訳してみました。
Lucene 3.4/Solr 3.4 がリリースされました。Lucene PMC によるニュースリリースによると、現在 Lucene/Solr 3.1, 3.2 あるいは、3.3 を利用しているユーザは、アップデートすることを強く推奨しています。これは、機能ハイライトにあるように、OS あるいは、コンピューター のクラッシュ/電源消失により、インデックスが壊れてしまうバグが修正(LUCENE-3418)されているからです。無停電電源のある環境であれば比較的安全なのかも知れませんが、いつそのバグを踏んでしまうか分かりませんし、出来るだけ早めのアップデートを検討した方が良いかもしれません。
Lucene 機能ハイライト:
- OS あるいは、コンピューターのクラッシュ/予期せぬ電源消失によりインデックスが壊れてしまうバグ (LUCENE-3418) を修正しました。
- 新しいファセットモジュールとして、検索時にファセットカウントの集計を行うモジュール(LUCENE-3079)を追加しました。
- JOIN モジュールの追加により、BlockJoinQuery/Collector (LUCENE-3171) を利用して、ネストしたドキュメント(親子関係のあるドキュメント)のインデキシング/検索が可能になりました。
- タームの位置情報を含めることなく、ターム頻度(タームフリクエンシー:TF)をインデックスに含めることが可能になりました。以前の omitTermFreqAndPositions オプションでは、常時、両方を含めない設定しか行えませんでした。(LUCENE-2048)
- QueryParser モジュールで、NumericRangeQuery が作成可能になりました。
- SynonymFilter の追加により、インデキシング/検索時に、複数の類義語への展開が行えるようになりました。また、WordNet や Solr の類義語フォーマットのファイルの利用が可能です。 (LUCENE-3233)
- ソート対象フィールドで、値が入っていない場合の動作を SortField.setMissingValue によりコントロール出来るようになりました。(LUCENE-3390)
- addIndexes メソッド実行後に タームベクターが削除されてしまう問題が発生する問題を修正しました。(LUCENE-3403) #訳注:本文では、LUCENE-3402 となっていますが、LUCENE-3403 の間違いだと思われます。
Solr 機能ハイライト:
- SolrJ クライアントが、検索結果のグループ/レンジファセットを処理出来るようになりました。(SOLR-2523)
- 新しい XsltUpdateRequestHandler を利用することにより、XSLT による XML ドキュメントの Solr ドキュメントへの変換とフィードを行うことが可能になりました。(SOLR-2630)
- ポストグループファセッティングオプション(group.truncate) により、各ファセットグループにおける高いランキングのドキュメントのカウントのみの集計が行えるようになりました。(SOLR-2665)
- 全ての Update Handler へ commitWithin アップデートリクエストパラメータを追加しました。これにより、特定の時間内での commit を行うように指示が行えます。(SOLR-2540)
- NIOFSDirectory を指定することが出来るようになりました。(SOLR-2670) #訳注:DirectoryFactory において、設定出来る項目として追加されています。
- ハイライトの新しいパラメータ hl.phraseLimit により、FastVectorHighlighter のパフォーマンス向上が行えます。(LUCENE-3234) #訳注:フレーズマッチの長さ制限を与えることによるパフォーマンス向上ということになります。
- クエリーキャッシュとフィルターキャッシュをリクエスト毎に使用しないように設定可能になりました。Wiki も参照して下さい。(SOLR-2429)
- SynonymFilterFactory における、メモリ使用量、ビルド時間およびパフォーマンスを向上しました。(LUCENE-3233)
- スキーマでの設定に omitPositions を追加しました。これにより、インデキシング時に、ターム頻度(TF)を残したままタームポジションを保持しないようにすることが可能になりました。(LUCENE-2048)
- マルチスレッド化された DataImportHandler に対していくつかの改善を行いました。
ここまで。
ということで、目玉は、やはりインデックスが壊れてしまうバグの修正でしょうか。でも、これにより Lucene/Solr 3.4 以前の 3.X は、実質的には使えないという事になりますよねぇ。なお、Jira にも書いてあるように、ハリケーン アイリーンのおかげで露呈したバグのようです。
Monday, January 3, 2011
[備忘録] Mac OS X Snow Leopard でことりえ辞書を初期化する
義母が利用している MacBook で、ことえりの日本語変換がむちゃくちゃな状態だと言うので、初期化することに。実は、ATOK の購入も考えたのだけど、まずは初期化して様子見ということで、ちょっと ATOK 11 の実力を見たかったので残念w
1. 環境
MacBook Pro 15"
Mac OS X 10.6 Snow Leopard
2. 初期化の手順
Users/XX/Library/Preferences
以下のファイルを削除
com.apple.Kotoeri.plist
com.apple.Kotoeri WordRegister.plist
com.apple.Kotoeri Preferences.plist
com.apple.Japanese Analysis フォルダ内の以下のファイルを削除
Environment.plist
InputPrediction.dict
LearningDictionary.dict
再ログインして日本語変換を確認。
Friday, December 24, 2010
[備忘録] Solr 1.4 と cmecab-java で日本語検索環境を構築
Solr と cmecab-java を利用し、日本語形態素解析による検索環境の構築を行ったので、そのときの作業メモ。
Mac OS X 10.6.5 Snow Leopard
お約束の configure & make です。私の場合、サードパーティアプリは、/opt/local へ入れる事にしているので、
$ configure --prefix=/opt/local
$ make
問題なくビルド出来たようであれば、
$ make check
これも問題なければ、インストールします。
$ make install
あるいは、環境や設定、権限によっては、sudo も必要です。
$ sudo make install
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
$ tar zxvf cmecab-1.7.tar.gz
$ cd cmecab-1.7
$ pwd
/Users/hoge/work/cmecab-1.7
$ vi SConstruct
後は、プロジェクトページのインストールに関する解説通りで、問題なくインストールできます。
なお、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
稼働環境
MacBook Pro 15" (Unibody, Mid 2010), Core i7 2.66GHz, 8GB RAMMac 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 --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 {}
と表示され、以下のような解析結果が表示される。
参考にしたサイト
Monday, December 20, 2010
[備忘録] Solr 1.4 と Sen による日本語検索環境の構築
Solr 1.4 と Sen(MeCab の Java 実装)を利用し、オープンソースのみで形態素解析による全文検索が行えるような環境構築を行ったので、その作業メモ。環境は、以下の通り。
Mac OS X 10.6.5 Snow Leopard
$ 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 ディレクトリが無い場合には、作成する。
ダウンロードした、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
$ 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
$ cd $SOLR_HOME/solr/conf
$ vi schema.xml
以下のように sen 用のフィールドタイプを追加
$ 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
ということで。
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://shower.human.waseda.ac.jp/~m-kouki/pukiwiki_public/96.html
稼働環境
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
Subscribe to:
Posts (Atom)