Entry

検索システムをNamazuからmsearchへ

このサイトに用いるHTMLファイルの全文検索システムを、Namazuから、Unicode版msearchに変更しました。またそれに伴って、検索のページを変更し、複数の検索手法を取れるようにしました。

Melog: Site Search

今回の変更を行った理由は二つ。

まず、Namazuはメンテナンスが面倒くさいこと。
Namazuにもmsearchも、インデックス作成型の検索システムなので、新しいページを作成した場合インデックスを更新する必要がある。これは、cronで定期的にインデックスを更新させる事で対応できるのだけど、Namazuの場合、たまにインデックスの更新に失敗する事がある。恐らくこれは、Namazuのインデックス更新はサーバにかかる負荷が大きいので、現在使用しているXREAサーバ側で止められてしまう事が原因。まぁ毎日1、2ページ追加・更新されたぐらいでは、大した負荷はかからない。ところが、Movable Typeを使っている場合、ページを一括で更新する事がたまにある。例えば、ページの仕様を変更したい場合や、大量のコメントスパムを食らった場合。そうなると、大規模なインデックスの更新が行われてしまう事になり、その結果インデックスの更新がサーバで止められてしまう。
Namazuの場合、一度これが止められてしまうと、もう一度実行しても同じような所で止まってしまうので、再度インデックスを更新させるために面倒な手続きを踏まなくてはいけなくなる(このサイトのインデックス更新手法)。これは、メンテナンスの上で非常に効率が悪い。
msearchの場合、このサイトの全てのHTMLファイルを対象にインデックスを作成しても、全く問題がなかった。

二つ目は、Namazuの検索が、自分のようなサイトではあまり役に立たない事。
Namazuの検索システムは形態素解析(要するに、文章を解析する技術)によってインデックスを作成し、それを用いる事で高速な検索を行う。これが結構くせ者で、恐らく一般的な文章ならそれなりに上手く解析されのだと思うのだけど、固有名詞が含まれてくるとそうもいかなくなる。例えば、連続するカタカナ文字を一つの言葉として認識したりする。つまりどういう事かというと、「ローゼンメイデン」と書くと、Namazuからは「ローゼンメイデン」という言葉として認識され、「ローゼン」「メイデン」とは認識されない。するとどうなるのかと言うと、検索時に「ローゼン」と入れても、「ローゼンメイデン」という単語が検索の対象にならないという事態が発生してしまう。
アニメやゲーム等の固有名詞などが飛び交うこのサイトにおいて、これは非常に都合がよろしくない。もちろん、msearchでは問題なく検索する事ができる。もっとも、これは解析プログラムの変更である程度対応できる事なのかもしれないけど…。

上記の二つの理由により、検索システムをNamazuからmsearchに変更した次第。このサイトぐらいの規模なら、msearchは全く問題なく使う事ができる。ちなみに、このサイトは文字コードにUTF-8を用いているため、本家msearchの使用ができず、Unicord版msearchを使用している。
ちなみに、検索システムを変えた事による副作用として、検索画面のカスタマイズがかなり自由に行えるなった点も良かった。

こう書いてると、Namazuってあまり役に立たないように見えるけど、こういうくだけた文章やどんどん新しい固有名詞が出てくるようなサイトでは使いにくいという話で、学術とか技術解説とか、そういったしっかりした文章のサイトであればその威力を発揮するような物なのだと思います。多分。

参考

msearch導入記
日本語全文検索エンジンソフトウェアのリスト.
全文検索ソフト(Perl版)徹底比較

Comments (0 件)

コメントを残す

メールアドレスが公開されることはありません。