 |
 |
 |
 |
 |
 |
 |
| |
 |
 |
 |
商用検索エンジンは小規模なものは数十万円、大規模なものになると数千万〜数億円ものライセンス費用がかかってきます。しかし、Lucene/Solrはエンタープライズ・レベルの大規模システムに対応できるだけでなく、ライセンス費用が不要です。そのため、浮いたお金を開発費用に充ててアプリケーションの機能の充実化や品質向上を図ったり、ハードウェア費用に充ててバックアップ体制を強化することなどが可能となります。
また、商用検索エンジンの中には高価なハードウェアを必須要件としているものがあり、これも導入時の費用を押し上げる原因となっています。Lucene/Solrはそのような特別なハードウェアを必要としません。 |
| |
 |
検索エンジンの処理速度で最も重要かつ注目されるのが検索応答時間です。最新の検索エンジンはいずれも「転置索引」を作成して検索を実行する方式のため、単純な検索だと検索処理時間の差があまり出ません。
しかし、検索対象文書数が増えたり、検索式の複雑度が増したり、検索にヒットした文書数が増えたりした場合、検索エンジンによっては実用的なパフォーマンスが出ないものもあるため注意が必要です。
ロンウイットは、Lucene/Solrの動作特性を十分に理解したうえで導入コンサルティングを実施しております。そのため、最高の検索性能をお客様にご提供できるのです。 |
| |
 |
| 開発するアプリケーションが要求する基本的な検索機能が検索エンジンに備わっているか、確認しましょう。検索機能の基本項目には次のようなものがります: |
 |
| |
 |
○単語検索とフレーズ検索
○ AND/OR/NOT検索式、"()"を使った検索式、これらを組み合わせたBoolean検索式
○数値検索、日付検索、範囲検索
○ワイルドカード検索、正規表現検索、あいまい検索
○フィルタ検索
: |
 |
|
| |
検索エンジンによってはこれらの一部をサポートしていないものもあります。また、フレーズを正確に扱えない検索エンジンも存在します。上記は検索の基本機能であり、これらのなかの一部の機能が欠けているということは、これらを組み合わせた応用的な検索式が構築できないことを意味します。このことは将来、お客様が提供するサービスの一部を変更したり、機能の提供自体をあきらめなければならなくなる可能性があることを示唆しています。
Lucene/Solrはフレーズの正確なハンドリングに加え、上記のすべてをサポートし、その上でこれらを組み合わせた複雑な検索式を高速に処理することができます。
|
| |
 |
検索エンジンは、検索にヒットした文書のスコアを計算してランキング(検索結果の表示順序)を決定します。
「ランキング(検索結果の文書の表示順序)」と「検索結果のソート」は、アプリケーション開発の全期間を通じて、お客様からカスタマイズの要求がもっとも多く出てくる部分です。したがって、ランキングとソートのカスタマイズの自由度が低い検索エンジンの選択は好ましくありません。
Lucene/Solrはランキングとソートのカスタマイズの自由度が非常に高い検索エンジンだといえます。以下にカスタマイズ可能なパラメータやカスタマイズの具体例をあげます: |
| |
| |
 |
○フィールドの重み付け(インデクシング時)や検索語の重み付け(検索時)を考慮した
文書スコアによるランキング
○フィールドごとのソート(昇順・降順)(例:文字列、数値、日付など)
○任意の関数を用いた計算値の大小によるランキング
○位置情報によるソート(例:レストランを駅から近い順に表示するなど)
○検索語の文章中の位置によるランキング
○掲載料を支払っているスポンサー企業の商品の上位表示
○被リンク数の多いHTMLの上位表示
○検索のたびにランダムに並べる |
 |
|
 |
 |
検索エンジンの処理単位は「単語」です。しかし、スペースで単語が分かち書きされる英語などと違い、日本語は、文章から単語の区切りを見分けることが困難な言語です。そこで、日本語の文章からの単語抽出方法が重要になってきます。
現在、その方式には「形態素解析」と「N-gram」の2方式があります。これらの方式はそれぞれ一長一短があり、アプリケーションの要件に応じて選択できるのがベストです。また、アプリケーションの要件によっては、両方式を混在して使用できるのがよいでしょう。
しかし、ほとんどの検索エンジンは、どちらかひとつの方式しか採用していません。両方式が可能と謳う検索エンジンであっても「N-gram」が基本で、「形態素解析」はオプション料金を要求されたり、事例がないことから「N-gram」の利用を余儀なくされる場合もあります。
Lucene/Solrは、「形態素解析」と「N-gram」の両方式をアプリケーションの要件に応じて自由に選択できるほか、ひとつのアプリケーションでこれらを併用することも可能です。さらにそういった事例を持つ数少ない検索エンジンのひとつでもあります。 |
| |
 |
検索エンジンの処理性能のうち、検索時間の次に重要なのがインデクシング(転置索引の作成)に要する時間です。アプリケーションの要求時間内にインデクシングが終了することが重要ですが、場合によってはインデックスを複数に分けたり、分けたインデックスをマージしたり、運用設計を見直すことも行います。ロンウイットでは、Lucene/Solrの導入コンサルティングでこれらの点を考慮しながらお客様をサポートいたします。
検索エンジンによっては、リアルタイムのインデックス作成・更新ができなかったり、
インデックス作成・更新中の検索ができなかったり、検索のスループットが落ちたり、機能制限があるものもありますが、Lucene/Solrにはこういった制限がありません。 |
| |
 |
| ほとんどの商用検索エンジンは、サーバを複数配置することで、「スケーラビリティ」、「負荷分散」、「高可用性」への対応が可能です。 |
 |
インターネットにサービスを公開しているWebアプリケーションでは、Webサイトの人気上昇に伴うユーザ数の増加があったときに、検索サーバを複数台配置して高負荷に対応することが緊急課題となります。しかし、サーバ台数やCPU数などでライセンス課金する一部の商用検索エンジン(※)では、サーバを複数台配置することはライセンス費用と保守費用の負担が増えることを意味します。このため、「商用検索エンジンの導入が原因で開発予算を割くことができず、必要なアプリケーション機能の開発を見送った」という事態にもなりかねません。
Lucene/Solrも、サーバを複数配置することで「スケーラビリティ」、「負荷分散」、「高可用性」に対応可能です。ライセンスは無償なので、サーバの複数台配置に必要な費用は、純粋にハードウェアの費用のみとなります。 |
| |
| ※検索対象文書数やクエリレート(QPS)でライセンス課金するタイプの商用検索エンジンもあります。この場合はサーバ台数を増やしてもライセンス費用は変わりませんが、「商用検索エンジンを導入したがために、コンテンツを充実させることができない」という別の悩みも発生します。 |
| |
 |
商用検索エンジンの場合、ソースコードは非公開が基本です(オープンソース・ソフトウェアをベースに開発されたものなどを除きます)。そのため、検索エンジンに不具合が発生した場合、その対処にはベンダーの協力が必要となってきます。ベンダーのサポートを受けるには、通常はシステム規模に応じた年間保守費用の支払いが必要となります。
Apache Software Foundationのもと開発されているLucene/Solrは、コミュニティーが運営するメーリングリストがサポートの基本となっています。しかし、常時大量のコンテンツを保有・メンテナンスし、多数のユーザ向けに日々最新の情報を提供している企業にとって、ボランティアベースのコミュニティによるサポートだけでは不安があります。そこでロンウイットでは、このようなエンタープライズ分野でのLucene/Solrの利用を促進するべく、有償サポートサービスをお客様にご提供しております。
ロンウイットのサポートサービスでは、以下のような活動を行っております: |
| |
| |
 |
○Lucene/Solrに関するQ&A対応
○お客様サイトで発生した不具合の原因究明と回避策のご提案
○お客様サイトで発生した不具合のコミュニティーへの報告
○修正パッチの作成およびコミュニティーへのフィードバック
○コミュニティで発見・報告された重大なバグのお客様へのご連絡
○新機能の開発とコミュニティーへのフィードバック
○新バージョンやコミュニティに提案された新機能の調査とご報告 |
 |
 |
|
| |
| 「不具合への対処」という観点でLucene/Solrと商用検索エンジンを比較すると、Lucene/Solrはオープンソース・ソフトウェアであるために、「最悪でも自分で直せる」という安心感があります。一方、商用検索エンジンの不具合対応はベンダに依存するため、ベンダの協力姿勢が重要な判断材料となります。 |
| |
 |
以上の検索エンジンとしての基本機能に加え、その他のツール類の充実度も検索エンジンを使って開発するサービスの使い勝手を左右する重要な判定材料となります。
オープンソース・ソフトウェアであるLucene/Solrは、世界中の開発者が開発したツールが日々コミュニティに提案されており、よいものは取り込まれていくしくみになっています。したがって、ツール類も非常に充実しています。以下その一部をご紹介します。 |
| |
○インデックスブラウザGUIや管理画面。
○ハイライト機能。これにより、検索結果一覧画面にて、文書から要約を抽出・検索語を強調した状態で要約文を表示できます。 |
 |
| ○ファセット検索。これにより、検索結果画面に絞り込み検索用のリンクを自動表示し、クリックだけの簡単操作でユーザを目的の文書(商品情報など)にすばやく誘導できます。ユーザに複雑な検索式を入力させることなく、さまざまな切り口(文書の任意の属性)による絞り込み検索を実行可能にします。 |
 |
○表記のゆれや類義語を考慮した検索機能。これにより、「引越し」で「引っ越し」を含む文書を検索したり(表記のゆれ対応)、「首相」で「内閣総理大臣」を含む文書を検索する(類義語対応)ことができます。類義語検索のデモもご覧ください。
商用検索エンジンの中には、ツールに対してオプション料金を要求するものもあり、注意が必要です。 |
| |
 |
LuceneはJavaで書かれているため、Luceneを使ったアプリケーションはJavaで書く必要があります。しかし、Luceneの転置索引のフォーマットは公開されているため、Java以外のプログラミング言語を使ったLuceneポーティングが存在しています(C#やPythonなど)。したがって、開発チームのメンバーは使い慣れたプログラミング言語を選択することが可能です。
SolrもJavaで書かれているため、Solrプラグインの開発はJavaで行う必要があります。しかし、Solr自身は検索リクエストをHTTPリクエストで受け取り、検索結果をXMLで返す検索サーバとして機能しますので、フロントサーバをPHPやRuby
on Railsで開発する、といったことも可能です。 |
 |
| |
 |
以上ご説明したとおり、Lucene/Solrは大規模システムの高負荷に耐えうる高性能の検索エンジンです。そしてロンウイットは、お客様のご要望や状況に合わせて検索エンジンを導入し、お客様が安心して運用できるよう、Lucene/Solrに関するコンサルティングサービスとサポートサービスをご提供しております。
エンタープライズ・レベルの検索エンジンとロンウイットのサービスを、ぜひご検討ください。 |
| |
 |
 |
| Copyright
(c) 2006-2008 RONDHUIT Co., Ltd. All Rights Reserved. |