Namazu との比較

作成日 : 2011-10-31
最終更新日 :

msearch と Namazu

今までの全文検索では Namazu を使っていた。 ただ、Namazu が utf-8 に対応していないのが私にとっては不満だった。 現在私のページはすべてが utf-8 になっている。一方、Namazu の処理は euc である。 今、Namazu とのインターフェースを書いて utf-8 でも使えるようにしているが、 問題は 7bit ASCII と日本語 euc 以外の文字に対応できないことである。 たとえば、ダイアクリティカルマーク(補助記号)のついたアルファベットである、エスペラントの ĈĜĤĴŜŬĉĝĥĵŝŭ や フランス語の ÉéÀÈÙàèùÂÊÎÔÛâêîôûËÏÜëïüÇç などを検索文字に含めると文字化けしてしまう。

今回 msearch を利用することになった最も大きな理由は、utf-8 に対応していることだった。 utf-8 なら日本語はもちろんエスぺラントやフランス語などでのダイアクリティカルマークについた検索文字でも対応できる。

msearch 検索フォーム

簡単に msearch と Namazu を比較してみたので下記に示す。

msearch と Namazu の比較
観点msearchNamazu
ダイアクリティカルマーク検索不可
取りこぼしなしあり
検索語の動的スニペット表示不可
設置
アンカータグ単位出力不可
対応文書の種類HTMLHTML, PDF, その他各種
スコア不可
スケーラビリティ
meta タグによるキーワード対応不可

以下、解説する。

ダイアクリティカルマーク検索

ラテン文字などに発音を区別するときに、補助記号をつけることがある。この記号をダイアクリティカルマーク (diacritical mark) という。 utf-8 では、ダイアクリティカルマークのついた文字に独立したコードが割り当てられている。 Unicode 版に対応した msearch では、このダイアクリティカルマークつき文字をキーワードに検索をすることができる。

なお、このダイアクリティカルマークのありなしは msearch では区別される。 言い換えれば、Faure をキーワードにしても、Fauré とは一致しない。この逆も同様である。

取りこぼし

Namazu では、検索対象のテキストをあらかじめ単語に分かち書きし、索引を作っておくことで検索が高速となっている。 この分かち書きの精度によっては、取りこぼしが生じる。msearch は分かち書きをしないので、取りこぼしは発生しない。

検索語の動的スニペット表示

スニペットとは、検索結果における説明の部分をいう。どうやら Google に固有の言葉であるが、 以下検索エンジン共通で使うものとする。 Namazu では、このスニペットは固定された要約文である。この要約文は、もとが HTML の場合、 h1 タグ、h2 タグ、…、h6 タグ、本文先頭からの順に作られる。 したがって、スニペットに検索語が含まれていてもいなくても、同じ文が出てくる。 このとき、スニペットに検索語が含まれていない場合は結果が正しいのか、一度該当ページを見てみなければわからず、 手間がかかる。

一方、msearch ではスニペットは動的に作られる。すなわち、検索語の前後がスニペットとして表示される。

設置の難度

msearch は Namazu より設置しやすい。msearch は、perl プログラムが少しと設定ファイルが少しで済む。 一方 Namazu は perl プログラムの量が多く、さらに CGI は C 言語をコンパイルしなければならないため、難度が高い。

アンカータグ単位の出力

Namazu には歴史があり、その間で多くの機能を取り込んだ。そのなかの一つがアンカータグ単位の出力である。 一つのファイルが長いとき、区切りとして、アンカータグ単位で出力することができる。 すなわち、<a name="hogehoge"> というアンカータグがあれば、 ここから次のアンカータグまでの領域のみを検索の範囲として拾ってくることができる。 msearch にはこのような機能はない。

対応文書

msearch では、対応文書は基本的に html のみである。Namazu では、html のほか、テキストに出力できる pdf や、 テキスト形式、Word など Microsoft の文書の形式など多くが対応できる。

まりんきょ学問所全文検索システムmsearch > Namazu との比較


MARUYAMA Satosi