検索エンジンの常識をApache Solrで身につけるビッグデータ処理の常識をJavaで身につける(1)(2/4 ページ)

» 2011年11月18日 00時00分 公開
[伊藤敬彦株式会社ミクシィ]

【2】言語同定器

 検索エンジンで複数の言語からなる文書集合のインデックスを生成する際、入力文書の記述言語によって処理が異なることがあります。

 例えば、日本語文書では単語の区切りがないため、トークナイザが文中に含まれる単語を確率的に推定して単語を切り出してあげる必要があります。一方で、英語の文は単語の区切りが自明であるため、トークナイザが行う処理はほとんどありません。このように、入力文書の記述言語が複数存在する状況では、入力文書の記述言語によって利用するトークナイザなどのコンポーネントを変更する必要があります。

 上記のように入力言語によって処理内容を変えるためには、そもそも入力クエリや文書が、どの言語で記述されているのかを同定する必要があります。「言語同定器」というコンポーネントは入力文字列から言語を同定する機能を提供します。

【3】単語の正規化器&文字ノーマライザ

 単語の正規化器(lemmatizer)は、切り出された単語が複数の表現を持つ場合に対処します。表現のバリエーションが多い場合、1つの表現に集約(lemmatization by reduction)します。逆に、言語や正規化を行うコンポーネントによっては、すべてのバリエーションをインデックスしてしまう(lemmatization by expansion)こともあります。

 また扱う言語によっては、トークナイザが単語の正規化機能を提供します。例えば日本語のほとんどのトークナイザは単語の正規化機能を提供します。

 日本語の動詞をインデックスする場合、「未然」「連用」「命令」などで表現(語形)変化が起こるので、どの語形が入力文書に存在した場合でも「終止形」でインデックスするのが一般的です。これにより、文書内の動詞が終止形以外の場合(未然形や命令形など)でも、終止形の単語クエリに文書をヒットさせられます。このような日本語単語の正規化は多くの日本語の単語単位のトークナイザ(形態素解析器)の内部で実装されています。

 文字ノーマライザは入力文に対して文字単位の置換を行います。例えば、すべて (文書、クエリ)に存在する半角文字を全角文字に置き換えることで、検索クエリを半角、全角のどちらで発行した場合でも、記述された文字種に依存することなく同一の結果が得られます。

【4】ストップワード

 言語によっては非常に利用頻度が多い割に、情報をあまり持たない単語が存在します。例えば日本語の助詞「は」は非常に頻繁に利用されますが、「は」自体で検索するユーザーはあまりいないでしょう。このような単語をインデックスから削除することで、インデックスを小さく保ち検索性能を向上できます。

【5】コンテンツ抽出

 入力となる文書がテキストであればいいのですが、PDFであったり、Power Point のスライドであったりします。このような場合、文書データからテキストデータを抜き出す処理が必要になります。

 例えば、「Apache Tika」というツールはPDFやWordを含む多数の形式のデータからテキストコンテンツを抽出する機能を提供します。また、コンテンツをMySQLなどのデータベースに保存している場合、データをコピーして直接インデックスを生成する機構(コネクタ)をサポートする検索エンジンも存在します。

【6】ランキングの調整

 検索した結果クエリ単語を含む文書が何千件も存在することがあります。このようなとき、ある基準で検索結果をソートすることで、ユーザーが興味のある文書を上位にランキングできます。

 文書とクエリの適合率を計って適合率が高い文書を上位にランキングする場合が一般的ですが、入力データの中に存在する日付などを利用して検索結果をソートする場合もあります。

【7】クローラ

 検索対象の文書が手元にすべてある場合は、検索エンジンに手元にある文書すべてを入力として渡せます。しかし、インデックスの対象となる文書が手元に存在しないケースもあります。

 例えば、「Google」「Bing」のようにWeb文書全体を対象とする検索エンジンを構築する場合は、検索対象とする文書は手元にないため、収集する必要があります。「クローラ」というコンポーネントはURLを巡回(クロール)して未インデックスの文書や前回の取得時から変更のあった文書を取得し順次、インデックスしていきます。

検索エンジンの4つの主な利用方法

 検索エンジンは多様な場所で利用されています。以下その中でも一般的な利用方法を列挙しました。

Web検索

 インターネット上に存在する文書をクロール・インデックスします。何十億という文書をインデックスするため検索システムは非常に巨大なものになります。そのため、「Google」「Bing」など非常に限られた企業がサービスを展開しています。

エンタープライズサーチ(企業内検索)

 企業内、サービス内のデータを検索するシステムを指します。導入企業によって扱うデータのフォーマットや量には大きな開きがあり、検索エンジンに求められる要求も大きく異なるため、柔軟にカスタマイズできるシステムが必要となります。

  • エンタープライズサーチと6つの罠
    ここから始めるエンタープライズサーチ(1)
    エンタープライズサーチ導入の効果をしっかり出すには6つのハードルをクリアしなければならない。課題と解決策を紹介する

ニュース検索

 エンタープライズ検索の一分野で、新聞社・Webメディアなどが配信するニュース記事を利用した検索サービスを指します。ニュース記事は刻々と追加されるため、特にインデックス更新のリアルタイム性が必要です。

 また「Googleニュース」のように、各新聞社・Webメディアの記事すべてをインデックスし横断的に検索できるようにしたサービスもあります。

ブログ検索

 ブログを収集して検索できるようにインデックスしたサービスを指します。「Shooti」というサービスはブログやレビューをインデックスして検索クエリに利用された単語の口コミ(評価)を調査できます。

 次ページでは、現在利用できる主な検索エンジンを9つ紹介し、Solrの試し方について解説します。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。