テキストの前処理

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

1. スクリプト部分の除去

Namazu の全文検索の仕組みは、 HTML ファイルから不要なテキストを除くなどの前処理をしたのち、 単語を切り出してインデックスに貯えるという単純なものである。

HTML ファイルの場合の前処理は filter/html.pl という Perl プログラムで行われている。 前処理の中で、不要な部分を取り除くという操作の対象は、 HTML のコメント部分だけだ。 しかし、場合によっては他の部分も取り除く必要がある。 たとえば、私のホームページで多用しているスクリプト部分だ。言い換えれば、 <script>から</script>で囲まれたスクリプト部分は、 Namazu では解釈できないので取り除く必要がある。しかし、 現在の仕様では取り除かれてはいない。 これを取り除くようにするにはどうすればいいか。

スクリプト部分はコメントのように扱えばいい。 html.pl の remove_comments サブルーチンがコメント部分を削除しているので、 この部分でスクリプト部分もついでに除去しよう。

$$contref =~ s/<!--.*?-->//gs;

の文のあとに、次の文を付け加える。

$$contref =~ s!<script.*?/script>!!igs;

正規表現は、ふつう / (スラッシュ) で始まり / で囲むが、/ はHTMLタグで使われてしまう。 そこで / の代わりに !(エクスクラメーションマーク)を使い! で始まり ! で終わるように囲む。 .* は任意の0文字以上にマッチを表す表現だが、 ? を後に加えることで、最短マッチを行なうことを表している。

2. XHTML 用 META タグの扱い

XHTML では、META タグは <meta ... /> のように、スペース + / + >で終了させる。 しかし、html.pl では、末尾のスペース + / + > では解釈できない。 これを解釈させる方法が、Namazu メーリングリストでとりあげられていた。

http://www.namazu.org/pipermail/namazu-users-ja/2006-February/000691.html

(2006-02-16)

まりんきょ学問所全文検索システム Namazu > テキストの前処理


MARUYAMA Satosi