MTとMroongaで全文検索を設置完了

公開
更新

趣味のサーバー(さくらのVPS)いじり・MTいじりが高じて始めた全文検索の設置。ようやくサイトホームに検索窓を置くことができ、稼働させることができました。MySQLのFULLTEXTインデックス+Mroongaのパワーと、PSGIで動かしているMTのスピードが相まって、そこそこ速い検索システムになったのでは?と一人満足しています。Googleなどに頼らず、サイト内で完結できたのも良いですね。

作業はMTの検索結果テンプレートを普通に書いただけなので、特筆することはありません。強いて言えば、昨夜寝る前に見つけたノーマライザーの指定をやってみたのだけれど、上手くいかなかったこと。

ノーマライザーは、例えば「リンゴ」と書いてある場合に「りんご」・「リンゴ」...つまりひらがな・カタカナどちらでもヒットするようにできるにするような仕組みで、FULLTEXTインデックスへ下記のように設定していしました。

normalizer "NormalizerMySQLUnicodeCIExceptKanaCIKanaWithVoicedSoundMark"

しかし、「リンゴ」の例は上手くいくのに、なぜか「アクセシビリティ」で検索すると何もヒットしなくなってしまいました。それは非常に困る...。(アクセシビリティは力を入れたい分野なので。)ひとまずノーマライザーは使わないことにしました。

※2014年2月8日19時追記:@ktouさんが調べてくださいました。ありがとうございます。私が全文検索用パーサにTokenMecabを指定したのですが、「NormalizerMySQL系(のノーマライザー)はカタカナをひらがなに正規化するのでMeCabと相性が悪いのです」とのことでした。

検索を試してみたい方は、下記からお試しください。(CSSはまた改めて調整します。)次は関連記事を表示できたらいいなと考え中。MTAppjQueryのMTAppListingを使えばできそうです。加えて、フックポイントを使って相互リンクにできたらより良いですね。

サイト内検索