Apache Solrをインストールしてみる

2012年6月28日

Apache Solrを入れてみます。

ちょっと前までは、Apache Solrで日本語を扱う時は

SenとかGosenとかの日本語形態素解析ライブラリを一緒に入れる必要がありました。

Apache Solr 3.6からは、Kuromojiという日本語形態素解析ライブラリがApache Solrに同梱されるようになりました。

これにより、日本語を扱う時、Apache Solrだけをインストールすれば良くなりました。

ということで、Apache Solrのインストールをしてみます。

まず、Apache Solrのサイトから3.6をダウンロードします。

ダウンロードした物を適当に展開します。
[shell]tar xvfz apache-solr-3.6.0-src.tgz[/shell]
続いて、schema.xmlを編集します。

今回はtext_jaいうフィールドを日本語解析にかけようと思うので
[xml]<fieldType name="text_ja" positionIncrementGap="100" autoGeneratePhraseQueries="false">
</fieldType>[/xml]
というfieldTypeタグを使います。

※Apache Solrのexampleに入っているschema.xmlでは、すでにtext_jaのフィールドタイプが宣言されています。

この中にを追加し、さらにその中に以下を定義します。
[xml]<tokenizer class="solr.JapaneseTokenizerFactory" mode="search"/>[/xml]
これだけで、基本中の基本は完成しました。

続いて、フィルタですが
[xml]<filter class="solr.JapaneseBaseFormFilterFactory"/>[/xml]
を追加。

これは、動詞などを基本形でインデックスに登録する事を指定します。

たとえば、「入れられる」は
JapaneseTokenizerFactoryで
=>入れ/られる
と変換されます。
これに対して、JapaneseBaseFormFilterFactoryでは
=>入れる/られる

という変換をしてくれます。
[xml]<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_ja.txt" enablePositionIncrements="true"/>[/xml]
は、「の・を・が」などの語句をフィルタリングします。
[xml]<filter class="solr.JapanesePartOfSpeechStopFilterFactory" tags="stoptags_ja.txt" enablePositionIncrements="true" />[/xml]
は、品詞などをフィルタリングします。
[xml]<filter class="solr.LowerCaseFilterFactory"/>[/xml]
ローマ字を小文字にします。
[xml]<filter class="solr.CJKWidthFilterFactory"/>[/xml]
全角のローマ字を半角、半角カナを全角にします。
[xml]<filter class="solr.JapaneseKatakanaStemFilterFactory" minimumLength="4"/>[/xml]
片仮名の表記揺れを補正します。

コンピューター => コンピュータ
のような感じ。

これらのフィルタを全部入れたfieldTypeは以下のようになります。
[xml]<fieldType name="text" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="false">
<analyzer>
<tokenizer class="solr.JapaneseTokenizerFactory" mode="search"/>
<filter class="solr.JapaneseBaseFormFilterFactory"/>
<filter class="solr.JapanesePartOfSpeechStopFilterFactory" tags="stoptags_ja.txt" enablePositionIncrements="true" />
<filter class="solr.CJKWidthFilterFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_ja.txt" enablePositionIncrements="true"/>
<filter class="solr.JapaneseKatakanaStemFilterFactory" minimumLength="4"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>[/xml]
となります。

早速、試してみます。

cd solr
java -jar start.jar

で起動します。

続いて、管理画面を表示

http://localhost:8983/solr/admin

analysisというリンクをクリック

Field Analysis

の中のFieldをtypeに設定して、テキストエリアにtext_jaを入力

Field value (Index)に適当な文章を入れてみます。

Index Analyzerという所に、解析結果が表示されるはずです。

先ほど設定したフィルタを順に適用していった結果が表示されています。