Apache Solrとは
Apache Solrとは、The Apache Projectが管理している全文検索エンジンのオープンソースソフトウェアである。Java全文検索ライブラリであるApache Luceneを検索エンジンとして利用して、Java VM上で動作する。
Apache Solrの特徴
Apache Solrには、次のような特徴がある。
- 強力な全文検索機能を持っていて、フレーズ検索、ワイルドカード検索、ジョイン操作、グルーピングなどをサポートしている。
- ビッグデータのような大容量のデータに対応できる。
- 管理者向けのGUIが用意されている。
- ほぼリアルタイムのインデックス作成をサポートしている。
- インデックス、検索用の機能をプラグインによって拡張できる。
- スケーラビリティや耐障害性を考慮したシステム構成を取ることができる。
Apache Solrの登録、検索のインタフェース
Apache Solrへのデータの登録や検索などの操作は、HTTPを使って行なう。HTTP上のAPIは、REST-like APIを採用している。全文検索の対象となるドキュメントは、JSON、XML、CSV、バイナリなどの形式で登録することができる。同様に、検索結果も、JSON、XML、CSV、バイナリなどの形式で出力することができる。
Apache Solrでの日本語の利用
Apache Solrで、日本語の全文検索を行ないたい場合には、日本語形態素解析器であるKuromojiを利用するのが一般的である。以前は、この形態素解析の機能に制限があり、日本語の解析には難があると言われていた。Kuromojiの採用によって、日本語処理も実用レベルに達している。
Apache Solrの冗長化
Apache Solrには、Solr Cloudと呼ばれるクラスタ構成の仕組みが用意されている。Solr Cloudを使うと、クエリの負荷分散やフェールオーバーなどを実現することができる。また、設定を集中管理することができる。
Apache Solrは、複数の検索対象を持つことができ、一つ一つの検索対象をコレクションと呼ぶ。 クライアントは、コレクションに対して登録・検索を行なうことができる。 コレクションが大きくなり、1つのノードで扱うことができない場合には、シャードという単位に分割して管理を行なうことができる。シャードには、 コアが配置される。コアは、実際の処理の最小単位である。コアはレプリケーションをサポートしていて、複数のコアをレプリケーションすることで冗長 構成を取ることができる。
Solr Cloundの情報管理
Solr Cloundの設定情報の管理は、Apache Zookeeperを利用して行なう。Apache ZookeeperはApache Solrに同梱されているが、このバージョンではZookeeper自体の冗長性を確保することはできない。Zookeeperの冗長性を確保するには、Zookeeperを別途入手してインストールする必要がある。Zookeeperを冗長化する場合には、最小で3台のサーバが必要となる。各サーバが、互いにデータをレプリケーションして保持することで、冗長化を実現する。
Solrコンソール
Apache Solrには、Solrコンソールと呼ばれる管理GUIが付属している。
次のような機能を利用することができる。
- Solr Cloundの稼働状態の確認
- コレクションの追加
- シャードの追加
- レプリケーションの設定
- ログの管理
- データの検索や取得
Apache Solrの性能
デージーネットでは、Apache Solrを使って、IMAPサーバでの全文検索を実現している。IMAPサーバとしては、dovecotを利用する。Apache Solrは、ほぼリアルタイムでのインデックスをサポートしている。そのため、メールがローカル配送される時に、dovecotからApache Solrに対してデータを自動的に登録 することができる。
メールクライアントからの検索が行なわれた時には、自動的に全文検索の機能を利用することができる。 例えば、約20000件、700Mバイトのメールデータのメッセージ全体を選択して検索を行なった場合、全文検索機能がないと35秒もの時間がかかる。一方、Apache Solrの全文検索機能を使った場合には、一秒以内で検索が終了する。
【カテゴリ】:ビッグデータ  メールサーバ  
【Webセミナー】OSSのおすすめメーリングリストシステム紹介セミナー
日程: | 10月23日(水)Webセミナー「BigBlueButton」を使用します。 |
内容: | OSSで実現可能なメーリングリストシステムをご紹介します。 |
ご興味のあるかたはぜひご参加ください。 |