Java

新発売の Apache Solr 入門 を読みました

技術評論社様の新刊、”Apache Solr 入門” 、まだ隅から隅までという状態ではありませんがざっくりと拝読いたしましたので感想です。

ちょっと前から書店に並んでいるそうですが、正式には昨日2月20日発売予定です。

Solr は Pure Java の検索エンジンである Lucene をベースとした検索エンジン「サーバ」です。
Pure Java の Lucene ベースといっても Solr が用意しているインターフェースは XMl over HTTP なので Solr を使うのに必ずしも Java の知識は必要なく、PHP や Perl からも利用できます。本書では 「Ant?何それおいしいの?」というくらい Java の知識が無い方でも迷わないようとにかく手取り足取り丁寧に説明されているのが特徴です。

構成もよく考えられており、実際に Solr を動かしながら頭から読み進めることも、ざっと流し読んでおいてリファレンスとして使うこともできるようになっています。また「そこは技術者の勘でよろしくやってくれ」的な置いてけぼり感はなく、Windows / Linux / Mac OSX 各プラットフォームに対応した詳細な解説があり、どんな初心者でも「なんかうまく動かないなぁ・・」ということがないよう細かくフォローされています。

・Java も検索エンジンも分からないけど自分のWebシステムに柔軟な検索システムを導入したい
・Java はバリバリ分かっているけれども検索エンジンってどういうもの?
・Namazu は使ったことあるけれども Lucene / Solr ってどうなのかしら?
と、どの知識レベルの方でもすんなり読み進められると思います。

Solr は「まぁ、大体 HTTP ベースのインターフェース用意したから、あとはざっくりがんばってね」という印象がありましたが、本書を読んでとにかくその完成度の高さに驚かされました。
ant タスクを使ってドキュメントをフィードしたり、Webベースの(人間向けの)インターフェースを通じて管理やトラブルシュートをしたりと、Lucene を直に叩くよりもかなり効率的に開発・運用が出来そうだと感じました。

全文検索とは何か、形態素解析/n-gramとは何か、といった検索エンジンの起訴要素から Solr のインストール、設定方法、さらには Java / PHP / Ruby / Python / Perl / JavaScript と主要な言語におけるプログラミング方法、そして運用における実践的なテクニックまでカバーしており検索エンジン経験者から Java / 検索エンジン初心者までお勧めできる本です。

私が Solr について特に気になっていた点は以下の二点です。

1. Java から Solr を利用する際、生の HTTP リクエスト・レスポンスを扱う必要があるのか?それとも Solr4J みたいな Solr の API を叩くライブラリが用意されているのか
2. クラスタ化によるスケーラビリティ、可用性の確保ができるのか

3. Java アプリケーションからは Lucene の API で直にインデックスを操作し、他のプロセスからはインデックスにアクセスするインターフェースとして Solr を利用することができるのか

本書で 1. 2. については満足のいく対応がなされていることが分かりました。

1. については、Solr 1.3 より Java 用のクライアントライブラリが同梱されており、生の HTTP/XML を扱う必要はないことが分かりました。
Java で検索エンジンを使いたいなら Solr を使わずとも Lucene を直に叩けば良いのでは?と思うかもしれませんが、ビジネスロジックのレイヤと検索エンジンのレイヤを切り離すことはスケーラビリティや可用性を柔軟に実現する上で重要です。

2. については 8 章「分散検索」にて複数の Solr サーバのセットアップ方法が、また可用性確保のためのレプリケーションについては10章「実践!Solr運用TIPS」にて内蔵のコマンドラインインターフェースやフックの使い方が説明されていました。

3. についてはざっと見た限り分かりませんでした。Java のプログラムであっても特段理由が無ければ素直に Solr のインターフェースを通してデータをフィードするのが正攻法でしょうね。

Twitter4Jはそのうち bot フレームワーク的なコンポーネントも作ろうと考えているのですが、Tweet を保管する部分に Solr を使うと面白いことが出来るかな?と思いました。

関連記事:
書籍「Apache Solr入門」 | 関口宏司のLuceneブログ
Apache Solr 入門 – 侍ズム