MySQL のフルテキストインデックス
WordPress の bsuite プラグインでも話題になっていた、MySQL での日本語検索。 うまくあたったりあたらなかったり…
日本語は分かち書き(単語分割)が非常に難しい言語なので、検索系のソフトを作ろうとすると相当な労力が必要となります。 英語ならスペースで分ければ簡単なんですけどね…
かくゆうぼくも、なんとか WordPress のエントリに「関連エントリ」をだそうと、Related Entory for J なんてのを作りかけたことがあるのですが、あまりにメモリを食い過ぎるので挫折。 あんなのレンタルサーバで動かしたらおちちゃうってくらいメモリとっていました。
本日オープンソースマガジンをみていたら、非常に興味深い記事を発見。
Senna 組み込み型全文検索エンジン – Senna 組み込み型全文検索エンジン
Sennaは組み込み型の全文検索エンジンです。DBMSやスクリプト言語処理系等に組み込むことによって、その全文検索機能を強化することができます。 n-gramインデックスと単語インデックスの特徴を兼ね備えた、高速かつ高精度な転置インデックスタイプのエンジンです。コンパクトな実装ですが、大規 模な文書量と検索要求を処理できるように設計されています。また、純粋なn-gramインデックスの作成も可能です。
MySQL バインディングという機能を使うと、MySQL のフルテキストインデックスをのっとって Senna による検索が可能になるとのこと。 つまり、これいれちゃえば既存のソフト(bsuite とかも)普通に日本語で動くわけです!。 しかも高速に、、すげぇ。。
あ!!、期待してしまった人ごめんなさい。 MySQL バインディングは MySQL へのソースコードパッチという形で提供されていますので、レンタルサーバでは無理なんです。:wink:
というわけで自サバの方、是非おためしください。 え、エントリ名英語だからいれなくても平気?! むむむ。(笑
ちなみに Senna については、「高橋メソッド」による説明がわかりやすいです。 🙂