RONDHUIT REPORT Vol.4 - SOLR 1.3 NEW FEATURES

Solr 1.3 の新機能
2008 年 9 月 17 日株式会社 ロンウイット

関口宏司

はじめに

2. DataImportHandler

本日「Apache Solr（以下 Solr）」の最新安定版 1.3.0

DataImportHandler（DIH）は RDB をはじめとする各がリリースされた。これまでの安定版である 1.2.0 のリリースか

種データソースから検索対象となるデータを取り出し、Solrら 1 年 3 ヶ月ぶりのリリースである。Solr についてはあちこちに登録するツールである。もともと、Lucene や Solr は転置で書き散らしているので、ここでは私が勝手に選んだ Solr索引を作成し、転置索引を単語で引いて検索する機能（の1.3 の新機能「トップ 5」を紹介しよう。

み）を提供する「Pure 検索エンジン」である。そのため、転置索引にデータをロードする部分は、ユーザが専用のプログラムを見つけるか作成するなどして別途用意しなければならない。

1. Distributed Search

このあたりがいわゆるクローラ付属の Namazu や商用検索

LinuxWorld Expo/Tokyo 2008 で紹介したこともあり、エンジンなどと比較して、Lucene/Solr が「ハードルが高い」顧問先等でユーザの関心がもっとも高い Solr 1.3 の新機といわれるひとつの要因である。

能が Distributed Search である。これまで Lucene のイ
ン デ ッ ク ス に 保 持 で き る 文 書 数 の 上 限 は Java のDIH は RDB などのデータソースから定義ファイルの内容にInteger.MAX_VALUE である約 21 億件であった。Solr

沿ってデータをインデックスに登録するツールである。「Pure1.3 では各 shard から集めた検索結果の docId を Long検索エンジン」である Solr から見るとあくまでもデータ登録ツに変換することにより、理論上は Long.MAX_VALUE であールのためその扱いは contrib となっているが、Solr 1.3 以る 約 922 京 件 に 扱 え る 文 書 数 が 増 え た 。 も ち ろ ん

降、正式にサポートが継続されるツールであることは間違い

Distributed Search のメリットは検索対象文書数が増えない。

たことだけではない。上限の 21 億件に達しないインデックスであってもあえて分散させることで Disk I/O を複数台の先に述べた Lucene/Solr のハードルの高さから、Tritonn

Disk に分散させて検索の高速化を図ったり、インデクシングや Ludia を選択したプロジェクトを私はこれまでたくさん見ての時間の短縮化を目指すことも可能である。文書種別や文きた。DIH は RDB データソースからの転置索引作成におい書管理のライフサイクル別にインデックスを分けて作成し、検てまだまだ Tritonn や Ludia ほどの簡便さにはおよばないも索時に統合する、という使い方をしているユーザ企業もある。のの、これまでのハードルを一気に半分くらいまでの高さに下こうすることで全体の運用工数を下げることが可能になる。たげる威力がある。Solr Wiki に記載されたドキュメントもすばだし現在の Distributed Search ではグローバル IDF をらしい。私は DIH により Solr のユーザが一気に広まる予感計算しないために、分散インデックスを均一に作っていないとがしている。作者の Shalin Shekhar Mangar 氏はこの各 shard のスコアが比較できない場合があるので注意が必

功績が認められ、Solr のコミッターに就任した。

要だ。なお Solr 1.3 の Distributed Search は Googleの分散検索を大いに参考にして実装された。そのため、デザ

3. マルチコア

イン上は十分スケールするといっていいだろう。ちなみに
shard という用語も Google で使用されているものである。

Solr には「コア」のオブジェクトがあり、検索リクエストを処理する各種リクエストハンドラ、検索を実行するサーチャー、イン

Copyright © RONDHUIT Co.,Ltd.
1

RONDHUIT REPORT Vol.4 - SOLR 1.3 NEW FEATURES

デックスのスキーマ定義、各種ツール・オブジェクト等さまざまるのだ。検索キーワードを使う代わりに基準のドキュメント（キなデータを保持している。Solr 1.2 までは Solr インスタンス

ヤノン EOS 40D）の属性データを使って検索するところがミにコアは 1 つであったが、Solr 1.3 からは複数持てることになソである。SC は Google でいうところの「もしかして」機能とった。これがマルチコアである。

同じであり、ユーザがタイプした英単語などのスペルミスを検出し、正しいと思われるスペルを表示する。QE は特定のクエマルチコアの提案者は当初 Tomcat などのサーブレットコンリに反応させてスポンサー企業のドキュメントを検索上位にテナ上に 1 つの Solr をデプロイし、その Solr が複数のコアを表示する機能である。Google でいうところの AdWords に持つことで複数のインデックスをコントロールできるなどの効用

似 て い な く もな い が 、検 索結 果 に 紛 れ 込 ま せ る と ころ がを説いた。しかし Tomcat 上に複数のシングルコアの Solr イ

AdWords とは大きく異なる。さらに、Solr 1.3 には取り込ンスタンスをデプロイすれば同じことができるので、提案の根まれていないが、StatsComponent というコンポーネントも拠としては弱かったように思う。しかし現在は機能強化がなさ提案されている。これを使うと検索結果の特定数値フィールれ、Solr 起動後に新しいコアを CREATE/LOAD し、古いドの合計や平均を取得できる。これだけではよくわからないかコアを UNLOAD する機能をもつまでになった。これにより再もしれないが、たとえば賃貸物件を検索できるサイトで使う起動なしでスキーマが変更可能になる運用ができるようだ場面を考えてみよう。StatsComponent を組み合わせて（Tomcat に複数のスキーマが異なるシングルコアの Solr を使うと、「東京都江東区」「50 平米」「築 3 年以内」というデプロイすればやはり可能だが、Tomcat のホットデプロイより絞り込み検索結果を取得すると同時に、物件価格の相場はマルチコアの方が Solr をコントロールしやすいだろう）。

情報などをユーザに提示できるようになるのだ。ちなみにこのコンポーネントの作者は私である。

4. SearchComponent
5. Lucene 2.4-dev

検索リクエストを処理するリクエストハンドラが、SearchComponent という抽象クラスを拡張した各種コン

Solr 1.2 の Lucene は 2.2 相当であったが、Solr 1.3 のポーネントの組み合わせで実装されるようになった。これによりLucene は 2.4-dev を使用している（"-dev”というのはリクエストハンドラに重複していたコードが抜き出されて整理さ「開発中」を意味する）。Lucene の 2.2 から 2.4 は相当のれ、いろいろな検索コンポーネントの開発スピード向上に貢機能強化がなされている。一部をあげると、「インデクシング献した（のちに Distributed Search の導入により、コンポ効率の向上」「新しいインデクシング関連パラメータ」「検索ターネント開発の難易度が上がり開発スピードは鈍化したが）。

イムアウト」「ハイライト機能強化」などがあり、これらは Solr

これにより開発されたのが MoreLikeThisComponent

1.3 に取り込まれて Solr 自身の機能向上に貢献している。

（ MLT ） 、 SpellCheckComponent （ SC ） 、
QueryElevationComponent（QE）である。MLT はド（株）ロンウイットについてキュメントを検索の基準にし、そのドキュメントと似たドキュメ

ロンウイットはオープンソースの全文検索エンジン Lucene

ントを検索するコンポーネントである。MLT は EC サイトなど/Solr を企業システムに導入する支援サービス事業を展開で使うと面白い応用ができる。たとえば EC サイト訪問者がしている。

「キヤノン EOS 40D」を選択したときに MLT を実行する。す

お問い合わせ先ると、その商品と関連性の高い商品が検索され、その下にお〒100-0005

すすめ商品として「キヤノン EOS Kiss F」や「ニコン D80」な

東京都千代田区丸の内 1-1-3 AIG ビル B1Fどが表示される、というような使い方ができる。なぜ検索エン電話：03-5288-5927

ジンでこのようなことができるかというと、MLT は「キヤノン」とい

メール：sales@rondhuit.com

うメーカ名や「デジタルカメラ」「一眼レフ」といった属性データ

ホームページ：http://www.rondhuit.com/などをキーにして検索し、スコアの高いものを順に表示していCopyright © RONDHUIT Co.,Ltd.
2

FAX：03-5288-5928