お使いのブラウザは最新版ではありません。最新のブラウザでご覧ください。

CNET Japan ブログ

サーチエンジンの仕組み(3) − クエリーサーバー

2004/05/16 23:09
  • このエントリーをはてなブックマークに追加

プロフィール

inoue

1998年からポータル会社のエンジニアリングのトップとして業界を見続けてきた井上俊一さんが、サーチエンジンの本質について考え、業界を取り巻く状況について独自のコメントを行います(このブログの更新は2004年5月31日で終了しました)。
ブログ管理

最近のエントリー

さてサーチエンジンの仕組みを簡単に説明してきているが、最後三つ目の要素がクエリーサーバーだ。

  1. クエリーサーバー
  2. クエリーサーバーの仕事はユーザーの入力した問い合わせ(クエリー)に対して答え(検索結果)を返すことだ。

    例えばクエリーが「インターネット」だとすると、インデクスの中から「インターネット」を含むURLを取り出して来て、何らかのランキング手法により上位10件を表示する。

    簡単に言うとそれだけなのだが、細かく言うと色々な機能を含んでいる。まずクエリーの構文を解析しないといけない。日本語の場合、通常では1ワードあるいは2ワード程度で検索する人が最も多い。3ワード以上の言葉を入れる人は珍しく、検索上級者と言えるだろう。これが英語になるともう少しワード数が増えて、平均で2〜3ワード位になるのではないだろうか。

    現代のサーチエンジンでは空白(スペース)で区切ると暗黙の了解としてAND検索を意味することになる。よってクエリーが2以上のワードからなる場合には、内部でAND検索をしなければならない。

    また検索エンジンには"+", "-", と言った演算子や"(", ")" などの括弧でグループ化できるものが多い。
    "+", "-"と似たようなもので"AND", "NOT", "OR" などが使えるものもある。正確に言うとこれらの演算子とワードの組み合わせがクエリーとなるため、クエリーサーバーではまず演算子をきちんと理解し構文として解釈する必要がある。

    あるいはGoogleで使える"site:", "inurl:"などの特別構文もきちんと理解する必要がある。これらはクエリーサーバーの役割である。

    ユーザーのクエリーをきちんと構文として分解したら、必要なワードや条件でインデクスをlook upすれば良い。

    さて、インデクサーのところでは述べなかったが、各種の特別構文を使えるようにするためには、インデクスを生成するときに単にワードとURLの対応表を作っておくだけでなく、メタ情報としてワードの出現する場所(タイトルなのかボディなのかそれともURLなのか)や、その中でのワードの出現位置(先頭から何バイト目に出現するか)などの情報を作成して保存しておかなければならない。そういったメタ情報があらかじめ用意されていなければフレーズ検索や"site:"などの特殊構文に瞬時に対応できない。

    通常はURLさえも単なる数字(0, 1, 2のような)に置き換えてインデクスに保存する。そのため、内部的な処理としてはあるワード1に対して得られた数字の集合1と別のワード2に対して得られた集合2のAND集合を取ったりOR集合を取ったりするだけの単純な作業になる。

    そして先ほど言ったように色々な特殊構文によって得られた最終的な集合を独自のアルゴリズムでソートして先頭の10件を返すということになるのだ。

    最後にソートして順番を決めるところが一番のミソなのであるが、GoogleはPageRankという独自のアルゴリズムでこれまでにない良い結果を出し瞬く間にユーザーの間に浸透した。PageRankの説明は他の文献に譲るので色々と検索して探して見て欲しい。

    これも本来はインデクサーの部分で述べることだが、PageRankのようなランキングの数字もあらかじめインデクスを作成するときに決まるものだ。最終的にユーザーに返る結果は静的なランキング(ユーザーの入力したワードによらない)ものと、ユーザーの入力したワードによって決まる動的なランキングを両方合わせたものになる。Googleツールバーを使っている人はあるページを見ているとそのページのPageRankがツールバーに10段階で表示されるのをご存知だろう。そのページを見ただけでPageRankが表示されるのは、キーワードとは関係なくPageRankが静的な情報だからである。

    話がインデクサーに方に戻ってしまったが、クエリーサーバーとはユーザーのクエリーに対してURLを返すものだという風に理解しておいてもらえればよい。

さて、これで一通り簡単にサーチエンジンの仕組みを説明したのだが、よくよく考えると「検索結果はインデクスをlookupしているだけだから、ユーザーがキーワードを入力する前に検索結果は既に決まっている」ことに気づくだろう。これを称して「サーチエンジンは一方通行のアプリケーションである」と私は言っているのであるが、この一方通行性については次回説明しようと思う。

-inoue

※このエントリは CNET Japan ブロガーにより投稿されたものです。朝日インタラクティブ および CNET Japan 編集部の見解・意向を示すものではありません。
運営事務局に問題を報告

最新ブログエントリー