Linux で root 権限なしでも Solr を Tomcatの上で動かす1つのやりかた

Solr はサーブレットとして実装されているので、実行するにはサーブレットコンテナが必要になります。
Solr には Jetty というサーブレットコンテナがバンドルされているのでその上で動かすこともできるのですが、Tomcat の方が機能的にすぐれていたり、Nutch 等の他のアプリケーションとコンテナを共有することができるので、ここでは Tomcat の上で Solr を動かす方法について記述します。

Solr のインストール

$ cd $HOME/local
$ wget http://people.apache.org/builds/lucene/solr/nightly/solr-2009-06-05.tgz
$ tar xvfz solr-2009-06-05.tgz

Tomcat に組み込む

$ mkdir $CATALINA_HOME/webapps/solr
$ cd $CATALINA_HOME/webapps/solr
$ jar xvf $HOME/local/apache-solr-nightly/dist/apache-solr-nightly.war
$ cp -r  $HOME/local/apache-solr-nightly/example/solr/bin .
$ cp -r  $HOME/local/apache-solr-nightly/example/solr/conf .
$ vi $CATALINA_HOME/conf/Catalina/localhost/solr.xml

   

日本語化のための設定

$ vi $CATALINA_HOME/webapps/solr/WEB-INF/web.xml 

<- 追記する

encodingfilter filters.SetCharacterEncodingFilter encoding UTF-8 encodingfilter /* $ mkdir $CATALINA_HOME/webapps/solr/WEB-INF/classes $ mkdir $CATALINA_HOME/webapps/solr/WEB-INF/classes/filters $ cp $CATALINA_HOME/webapps/servlets-examples/WEB-INF/classes/filters/SetCharacterEncodingFilter.class $CATALINA_HOME/webapps/solr/WEB-INF/classes/filters/SetCharacterEncodingFilter.class

起動確認

$ cd $CATALINA_HOME/webapps/
$ $CATALINA_HOME/bin/shutdown.sh <- すでに Tomcat が動いている場合はシャットダウン
$ $CATALINA_HOME/bin/startup.sh

ブラウザから動作確認
http://localhost:8080/solr/admin/

日本語文章をインデキシングして検索してみる

$ cd example/exampledocs
$ vi post.sh <- POST 先を変更
# URL=http://host:8983/solr/update
URL=http://host:8080/solr/update

$ cp utf8-example.xml nihongo.xml <- 日本語のドキュメントを作成
$ vi nihongo.xml <- 日本語のインデキシングと検索のためのテストデータ。文字コードUTF-8で。内容はお好みで。

  
    NIHONGO_TESTT
    日本語 の 入出力 の テスト
    Apache Software Foundation
    検索エンジン
    ミドルウェア
    SolrはApacheプロジェクト の 検索 エンジン です
    そーら ソーラ Solr
    0

true
$ post.sh *.xml ブラウザから確認 http://localhost:8080/solr/admin/stats.jsp numDocs : 27 とういう記述があったらOK 検索してみる http://localhost:8080/solr/admin/ から検索窓に ipod とか 日本語とか入れてみて検索できればOK


ではでは