apache-solr-3.5.0をGlassfish3.0.1に組み込んでみる
Solrは検索エンジンにLuceneを利用した、Java環境で動作する検索エンジンサーバです。デモを動かしてみて得た感触は以下の通り。(なお、僕は検索エンジンもSolrのこともあまり詳しくないんで表現が適切でないものが多いかもしれません、ご容赦ください。)
- 環境を適切に設定すればわりとさくっと動かせる
- 日本語のドキュメントが少ない(というか、全文検索エンジンの仕組み、たとえばIndexとかが体系的に難しくて、触ったことある人はいても文章を公開してないだけかも)
- 多言語に対応してない=日本語のインデックス作るにはプラグインが必要(一般的にも、日本語の処理には形態素解析用のエンジンと辞書が必要ですね)
- インストールしたら、付属してるサンプルデータをインデックス化してお試し可能
- XML形式やJSON形式で検索・結果応答の取得ができる(別に検索Webアプリとか立てて、JSONでリクエストを投げて応答を加工して表示する、っていうような処理になるのかしら)
- GlassfishとかTomcatみたいなアプリケーションサーバにdeployしなくてもスタンドアロンでサービス起動できる(マイクロサーバが付属してる)
- インデックスを作成するのに、別途クローラ(データを収集してスキームに変換してSolrに投げるやつ)が必要かもしれない、調査不足
- JSONとかXMLでやりとりできるから、専用アプリみたいなものが作りやすい
- 触ってみてないけど、レプリケーションとかスケールアウトとかみたいな大規模サービス向けに使うのに必要な機能ももっていそう
それで、SolrをGlassfish配下のアプリケーションサーバとして動かしてみようと思います。手元のGlassfishが3.0.1なのでこれで試しますがご容赦ください。なお、この後取り組もうと思っているlucene-gosenは、トップページに"Lucene/Solr 3.5 or 4.0"に対応してる、と書かれてるので、その都合でSolrのversionは3.5.0としてます。
参考文献
手順は大きく以下の通りです。
とりあえず、/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://
- 『ツリー』から『Enterprise Server』を選択。
- 『システム設定』タブをクリック。
- 『追加プロパティ』の欄に先ほど整理したプロパティを設定。
- 右上の『保存』をクリック。
- プロパティを反映するため、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://
以上、GlassfishへのSolrの組み込み手順でした。