ブール演算と各種の検索式

AND, OR, NOT に代表されるブール演算は2つ以上のデータの比較を行うもので、プログラム理論の中で、最も基本的なアルゴリズムの1つです。そのため、検索エンジンのようなデータベースにとっても条件処理の基礎となっています。またこれら以外の特殊な検索式も存在します。

データと入力項目の比較方法を決定するブール演算

AND, OR, NOT に代表されるブール演算は2つ以上のデータの比較を行うもので、プログラム理論の中で、最も基本的なアルゴリズムの1つです。そのため、検索エンジンのようなデータベースにとっても条件処理の基礎となっています。これらの条件を含む検索クエリを「検索式」といいます。

検索式とは、ユーザーのために用意された、検索処理の条件式のことです。条件式は検索エンジンの宿命的な欠点である検索ノイズをユーザーの手で排除するもので、ほとんどの検索エンジンでは検索式を採用して、ユーザーによる検索条件の指定を可能にしています。

検索エンジンによる全文検索では、検索キーワードと一致する語句を含んだWebページを探して結果表示します。このとき、キーワードの種類によっては非常に多くのWebページがヒットしてしまいます。

あまりに多数のWebページがヒットする場合、ユーザーは必要とする情報が掲載されているWebページを探し出すのが困難になります。検索式を用いた検索条件の絞り込みを行うことで、目的外のWebページを検索結果から排除することができます。

検索エンジンで使用できる主な検索式

検索エンジンで用いることのできる検索式には、主に次のようなものがあります。ただし、検索エンジンによって使用できる検索式の種類と記述方法は異なります。

AND検索
AND検索は検索フォームに記述される全てのキーワードと一致する語句を含んだWebページを検索します。3つ以上の単語を指定することも可能で、多くのキーワードを記述することで検索結果を絞り込むことができます。基本的には、間隔をあけて個々のキーワードを記述するだけで処理されますが、検索エンジンによっては語句の間に”and”や”+”という演算子を入力します。
NOT検索
NOT検索は主たるキーワードに一致する語句を含むWebページの中から、特定のキーワードに一致する語句が含まれるWebページだけを省いて検索します。3つ以上のキーワードを指定することも可能で、多くのキーワードを記述することで検索結果を絞り込むことができます。式としては、検索結果から除きたいキーワードの直前に”not”演算子やマイナス記号”−”などの除算式をつけて記述します。たとえば、Googleにおいて”オリンピック”を含み”冬季”を含まないWebページを検索するには「オリンピック -冬期」と入力します。
OR検索
OR検索は、複数の検索キーワードのいずれか1つと一致する語句を含んだWebページを検索します。多くのキーワードを記述することで検索結果を絞り込むことができます。式としてはキーワードとキーワードの間に”or”演算子を入力します。例えば、”健康 or 食事”は、「健康」 または「食事」のキーワードを検索します。
フレーズ検索
フレーズ検索は2語以上からなる複合語を、そのままの形のキーワードとして検索する方法です。式としては、引用符 ” フレーズ” を使用することにより、” フレーズ” のままのかたちで言葉が並んでいるWebページだけを検索します。
その他
ワイルドカード”*”などを用いることで行う部分一致検索や、検索するキーワードを正規表現で指定する正規表現検索、AND OR NOTの検索を同時に行う複合検索などがあります。

特殊な検索式とコネクティビティクエリ

検索エンジンによっては、特殊な検索を可能にする、特別な検索式を用意しているものもあります。例えば、Googleでは、”link:URL”という検索式を用いると、そのURLに対してリンクを張っているWebページを表示することができます。こうした特殊な検索クエリは、4種類の検索の目的の中の「コネクティビティ検索クエリ(Connectivity queries)」と呼ばれるものです。Googleの例では以下のようなものがあります。

site:ドメイン名

そのドメイン内のページを検索

cache:URI


ページのキャッシュを表示

link:URI


対象にリンクしているページ表示

related:URI


対象ページと類似したページを表示

info:URL


ページについての各種の情報を表示

allintitle:文字列


文字列をtitle要素に含むページを検索

intitle:文字列


最初の語をtitle要素に含み、次の語以降はtitleまたはそれ以外の要素に含むページを検索

allintext:文字列


すべてのキーワードを本文に含むページを検索

intext:文字列


本文(titleやアンカーテキストは含まない)にキーワードを含むページを検索

allinurl:文字列


URLに全てのキーワードを含むページを検索

inurl:文字列


URLにキーワードを含むページを検索

allinanchor:文字列


被リンクのアンカーテキストにすべてのキーワードを含むページを検索

inanchor:文字列


被リンクのアンカーテキストにキーワードを含むページを検索

フレーズ検索で完全一致するページを検索

フレーズ検索とは、複数キーワードでの検索時に、個々の単語に完全一致するものだけを探す検索方式です。1つのフレーズや人名・地名・引用文などを検索する場合や、ストップ語を含めて検索する場合のように、入力した語句と完全に一致する語句が含まれるWebページだけを結果表示したい場合に利用します。

多くの検索エンジンでは、二重引用符 「”」を用いて”検索語句 ” のように入力することで、検索キーワードがそのまま文中に並んでいるWebページだけを検索することができます。

完全一致型の検索エンジンを除いて、検索エンジンは2語以上からなる検索キーワードが入力された場合、通常は形態素解析によって個々の単語に分解した上で個々の単語によるAND検索を行います。検索結果にはそれらの語句を全て含むWebページが表れますが、必ずしも元の検索語句が含まれたWebページだけを表示するわけではありません。

例えば、検索フォームに「検索エンジン最適化」を入力した場合、「検索/エンジン/最適/化」と分解されて検索が行われ、それらの単語が全て含まれるWebページがヒットします。つまり「自動車エンジンについて検索できるサイトです。ブラウザはIE6.0に最適化されています。」などという入力した語句とは無縁のWebページにもヒットする可能性があります。

しかし検索フォームに「”検索エンジン最適化”」と、検索語句全体を二重引用符で囲んで入力することにより、「検索エンジン最適化」という語句に完全一致するWebページだけを表示することができます。

またフレーズ検索は、検索語句と完全一致するものを検索する方法であるため、通常の検索では無視されてしまうストップワードについても検索することができます。例えば、Googleで「a pen」という言葉を検索しても、「a」は無視されてしまい、「pen」を検索するのと同様の結果が表示されます。しかし、「”a pen”」と引用府で全体を囲ってフレーズ検索することで、確実に「a pen」が記述されるWebページを検索することができます。

この記事について