- 連載「売り上げ向上の即効薬『電光石火のウェブサイト』」のほかの記事はこちら
第1回:イントロダクション - 第2回:この記事
- 第3回:Cacheを知ろう
- 第4回:ダイナミックページアッセンブリーの威力がすごい
- 第5回:Solrをインストールしてみよう
今回は、サイト高速化のための3種の神器のうちの一つApache Solr(以後Solr)を知りたい、あるいはプロジェクトのパフォーマンス改善にSolrを検討している方々に対して、かしこく使えばウェブサイト高速化の強力な武器となるSolrパワーをご紹介します。
Ⅰ.高速で多様な検索能力をカンタンに導入できるSolr
Solrは「ソーラー」と発音することからもわかるようにSolar(太陽)に由来しています。ちなみに英語がネイティブな人の発音は「ソォー」と聞こえます。Apache Solrは、スタンドアロンのエンタープライズ検索エンジンサーバーで、非常に多くの優れた機能があります。これから、Solrという選択肢がなぜ良いのか、技術者以外の方にも納得していただけるように代表的な特長をご紹介したいと思います。
Solrは、javaで書かれた全文検索エンジンライブラリ ”Apache Lucene” をベースにしたオープンソースソフトウェアです。オープンソースですから無料で使用することができ、改変も自由です。オープンソースですが、商用の検索エンジンソフトを凌駕するほどの性能を持っています。例えば「ファセット検索」と呼ばれる、複数のカテゴリーを横断した検索結果の絞り込みはSolrが誇る機能です。Solrなら大規模データのファセット検索もサクサクとお手のものです。
もうひとつSolrの特徴としてSpatial Search(空間検索)があります。緯度経度を使った検索で、これにより「スカイツリーから半径5km以内のホテルというような検索が可能になります。さまざまなマッチングサービスがローンチされていくとき、空間検索は高頻度で使われるようになるでしょう。
また、開発においては、SolrはRESTライクなAPIを使用するので、開発のために特別なツールを用意する必要がありません。後ほども触れますが「インデクシングと呼ばれる検索のためのドキュメント登録、検索クエリなど、Solrとのやり取りはすべてHTTPで行えます。
Ⅱ.多言語対応、フィルターを使ってきめ細かな検索
Solrはマルチランゲージ、日本語、英語、中国語、ドイツ語、フランス語など世界で広く使用されている数十カ国語に対応しています。かな漢字変換や自動翻訳で文章を解析するのに使用している、日本語形態素解析用のフィルターがあるので、精度の高い検索結果が得られます。その他にも、例えば、「すずめ」でも「スズメでも同じ検索結果が得られるようにするためのフィルター、また「ネットワーク管理者」で検索したときはトークナイザが「ネットワーク」と「管理」と「者」に分けてしまうので、正しい検索結果を得るために一つの単語として検索するための辞書フィルターなど、日本語独特の表現に正しく対応するため数多くのフィルターを使うことができます。これまでは欧米で多用されてきたSolrですが、これからは日本でもSolrを使うサイトが増えてくると思われます。
Ⅲ.超高速検索を実現するためのインデクシング
Solrの超高速な検索を実現しているのがインデクシングです。RDBがデータそのものを検索するのに対して、検索エンジンではボリュームの小さい索引を検索します。その索引作成がインデクシングなのです。RESTライクなSolrでは、JSON, XML, CSVやバイナリデータをHTTP POSTすることでインデクシングできてしまいます。
また、SolrにはApache Tikaビルトインがバンドルされていて、MS-OfficeファイルやAdobe PDFなどリッチドキュメントのメタデータとテキストを抽出しインデクシングすることもできます。
Ⅳ.多くの大規模サイトがSolrを使用
まだ日本ではそう多くないですが、すでに欧米では多くの大規模サイトでSolrが使用されています。eBay(http://www.ebay.com/) , ネットフリックス(https://www.netflix.com/), AOL(http://www.aol.com/), インスタグラム(https://www.instagram.com/), ディズニー(http://www.disney.com/), イエローページ(http://www.yellowpages.com/), ホワイトハウス (https://www.usa.gov/)や、4450億ページにおよぶ世界中の過去のホームページを記録しているインターネットアーカイブ「ウェイバックマシン(https://archive.org/)などきりがありません。日本でもこれからどんどんSolrの活用が増えていくでしょう。
Ⅴ.クラウドフレンドリーなSolr
ユーザーの増加や検索対象の増加に伴い検索スピードが落ちてきたと感じたとき、容易に改善できるのもSolrのいいところです。
一つは、単純にハードの高性能化です。CPUアップグレード、メモリ増設、HDDの高速化(SSD化など)は、Solrアプリケーションにはなにも変更を加える必要がありません。はじめからクラウドサーバーを選択しておけば、ハード的なアップグレードもさらに簡単ですね。
また、Solr側での対応策もあります。Solrには通常モードに加え、SolrCloudというモードがあり、SolrCloudモードで起動すると、複数のSolrサーバーで対象を分割して検索できる分散冗長構成、いわばクラウドネイティブSolrになります。はじめに設定は必要ですが、設定さえしてしまえば、RAIDが一つのHDDに見えるように、複数のSolrサーバーがまるで一つのSolrサーバーのように扱えます。
アップグレードに後手は禁物ですが、過剰に事前にアップグレードするのもコストを考えると避けたいですよね。Solrには、これらのアップグレードや改修の必要性やタイミングを知るために必要なログ監視機能も用意されています。Solrの管理画面からいつでも確認して最適な対応をすることができます。
Ⅵ.日本でSolrの普及がいまひとつ遅れている理由
「RDB(リレーショナルDB)を使っているが検索に時間がかかるようになってきた」
「全文検索機能がなく追加したい」
というならSolr導入を検討する価値ありです。しかし、Solrに関する日本語の文献が少ないという理由から、Solrによる開発は難しいと考えている開発者が少なくないのでは?日本語の資料が少ないというのはそのとおりなのですが、だからといって諦めるのはもったいなさすぎます。
ある国内ECサイトリニューアル案件で、国内の開発会社が高くて到底予算内に収まらないというとき、アメリカの開発会社は半分以下の金額で請け負ってくれました。開発を発注する立場の方ならご経験があると思いますが、技術力の高い人の人月単価は高いですが、その分短納期で開発できるので、コストの安い人に依頼するよりも結果的に低予算で済むということがありますよね。最新のウェブテクノロジーを使う場合、そうした現象になることが多いのです。Solrの使用を検討したいが、開発者がいないという場合は、ご一報ください。案件に応じて適切な開発グループをご紹介できるかもしれません。やり取りが英語のためブリッジSEが必要ですが、高い技術を低コストで実現できる一つの方法として選択肢に加えてみてはいかがでしょうか。