検索対象の制限

作成日:2002-11-22
最終更新日:

ラテン文字への制限

ホームページの中に日本語のページと英語のページが両方ある場合、 検索エンジンを設けるときに考えるべきことがある。 それは、日本語のページを検索対象とすべきかどうかということだ。

日本語を読める人が対象であれば、 英語(というよりラテン文字)のページも検索対象としてかまわない。 しかし、 日本語が読めない人 (というより日本語のページが文字化けしてしまうブラウザしか持てない人) に対しては、 文字化けしてしまうページを表示させるのは親切とはいえない。

そこで、日本語が読めない人のために、 検索対象を制限する必要がある。 namazu でどのように実現するか。 もっとも簡単なのは、インデックスを複数作ることだ。 すなわち、日本語を含むすべてのページを対象としたインデックスと、 ラテン文字のみからなるページを対象としたインデックスの2つを作る。 そうすれば可能だ。しかし、わざわざインデックスを2つ作るのは、 もったいない。 他に方法はないだろうか?

エスペラントへの制限

日本語を排除するページを考える前に、 特定の言語のページのみを対象とする制約を考えよう。 たとえば、エスペラントのページだけに制限した検索も可能である。 私のページでは、/\.eo$/ という正規表現を使えばよい(注2)。 // にはさまれた \.eo$ は、 ファイル名 .eo がで終っていることを表している。 ピリオドの前にバックスラッシュ\が置かれているのは、 .が正規表現を意味するのではなく、 ピリオドそのものとして扱うことを表している。

注1:上記記述は2007年11月19日から有効。11月18日以前は、 /\.eo\./としていた。

日本語排除の方法

さて、日本語排除の方法だが、言語コードで j で始まる URI を 削除すると考える。これには、 form 内に次のように記述すればよい。

<input type="hidden" name="subquery" value="+uri:/\.[^j]\.$/">

value 内での // ではさまれた\.[^j]\.$ は、 言語コードの第1文字がj以外である2文字を表している。 $ は正規表現を表す文字で、 その直前の文字で文字列が終了することを指示する記号である。

注1 上記記述は2007年11月19日から有効。 以前は文字コード8859-1をラテン文字に用いていたため、 URI が1で終わるという意味の /1$/ を用いていた。

注2 もちろん、日本語を排除するだけでは、 ラテン文字に制限することにはならない。 他の非ラテン文字、たとえば、ハングル、キリル文字、ギリシャ文字、 繁体字、簡体字、アラビア文字をどうするかは、個別判断になる。

実例

では、違いを実際の検索で示そう。検索文字列に html を指定した結果である。

まりんきょ学問所全文検索システム Namazu > 検索対象の制限


MARUYAMA Satosi