apache-solr-3.5.0をGlassfish3.0.1に組み込んでみる

Solrは検索エンジンLuceneを利用した、Java環境で動作する検索エンジンサーバです。デモを動かしてみて得た感触は以下の通り。(なお、僕は検索エンジンもSolrのこともあまり詳しくないんで表現が適切でないものが多いかもしれません、ご容赦ください。)

  • 環境を適切に設定すればわりとさくっと動かせる
  • 日本語のドキュメントが少ない(というか、全文検索エンジンの仕組み、たとえばIndexとかが体系的に難しくて、触ったことある人はいても文章を公開してないだけかも)
  • 多言語に対応してない=日本語のインデックス作るにはプラグインが必要(一般的にも、日本語の処理には形態素解析用のエンジンと辞書が必要ですね)
  • インストールしたら、付属してるサンプルデータをインデックス化してお試し可能
  • XML形式JSON形式で検索・結果応答の取得ができる(別に検索Webアプリとか立てて、JSONでリクエストを投げて応答を加工して表示する、っていうような処理になるのかしら)
  • GlassfishとかTomcatみたいなアプリケーションサーバにdeployしなくてもスタンドアロンでサービス起動できる(マイクロサーバが付属してる)
  • インデックスを作成するのに、別途クローラ(データを収集してスキームに変換してSolrに投げるやつ)が必要かもしれない、調査不足
  • JSONとかXMLでやりとりできるから、専用アプリみたいなものが作りやすい
  • 触ってみてないけど、レプリケーションとかスケールアウトとかみたいな大規模サービス向けに使うのに必要な機能ももっていそう

それで、SolrGlassfish配下のアプリケーションサーバとして動かしてみようと思います。手元のGlassfishが3.0.1なのでこれで試しますがご容赦ください。なお、この後取り組もうと思っているlucene-gosenは、トップページに"Lucene/Solr 3.5 or 4.0"に対応してる、と書かれてるので、その都合でSolrのversionは3.5.0としてます。

参考文献


手順は大きく以下の通りです。

  • solr.solr.homeおよびsolr.data.dirの作成(ファイルの展開)
  • Glassfishでのプロパティの設定
  • Glassfishへのwarのdeploy


とりあえず、/opt配下にSolrを展開します。

bounoki@phorni:~> cd /opt
bounoki@phorni:/opt> sudo curl -O http://www.meisei-u.ac.jp/mirror/apache/dist//lucene/solr/3.5.0/apache-solr-3.5.0.tgz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 75.0M  100 75.0M    0     0  2266k      0  0:00:33  0:00:33 --:--:-- 5802k
bounoki@phorni:/opt> sudo tar -xzf apache-solr-3.5.0.tgz
bounoki@phorni:/opt> cd /opt/apache-solr-3.5.0/example/solr/
bounoki@phorni:/opt/apache-solr-3.5.0/example/solr> pwd
/opt/apache-solr-3.5.0/example/solr

上記、example配下のsolrディレクトリがsolr.solr.homeになります。


次に、index等のデータ用ディレクトリを作成します。

bounoki@phorni:/opt> sudo mkdir /var/solrdata
bounoki@phorni:/opt> cd /var/solrdata
bounoki@phorni:/var/solrdata> pwd
/var/solrdata

このディレクトリがsolr.data.dirになります。
Glassfishに渡すプロパティは以下の通り。

プロパティ名
solr.solr.home /opt/apache-solr-3.5.0/example/solr
solr.data.dir /var/solrdata


そしたら、Glassfishの管理画面(http://:4848/)にログインして、以下の手順でプロパティを追加します。

  1. 『ツリー』から『Enterprise Server』を選択。
  2. 『システム設定』タブをクリック。
  3. 『追加プロパティ』の欄に先ほど整理したプロパティを設定。
  4. 右上の『保存』をクリック。
  5. プロパティを反映するため、Glassfish Instanceを再起動。コマンドでもよいし、GUIからでもよい。


次に、Glassfishのautodeploy配下にwarファイルをぶち込みます。ぶち込むdomainは各自の環境に合わせてお選びを。

bounoki@phorni:/opt> sudo cp /opt/apache-solr-3.5.0/example/webapps/solr.war \
> /srv/glassfishv3/glassfish/domains/domain1/autodeploy
bounoki@phorni:/opt> ls /srv/glassfishv3/glassfish/domains/domain1/applications/
solr/


そしたら、以下の通りsolrを指定してGlassfishにアクセスすれば"Welcome to Solr!"が表示されるはず。
http://:8080/solr/

以上、GlassfishへのSolrの組み込み手順でした。