Tokyo (Cabinet|Tyrant|Dystopia)で作る全文検索の色々な方法まとめ
前提としてTokyoCabinet(若しくはTokyoTyrant)にテーブルDBがあり、
その複数カラムにまたがって全文検索ができるようにしたい。
例えばブログでいえばタイトルと本文と追記から全文検索をしたいとする。
Tokyoシリーズを使うということは平林幹雄氏の製品を信頼しているということなので、
できればmade by mikioで検索できればいいなと思って調べてみたところ、
想像以上に様々な方法があって迷った。
有力そうな4案について勝手に長所と短所をまとめてみるので参考にして下さい。
http://hyperestraier.sourceforge.net/index.ja.html
- Tokyo Tyrantにインデックスを張る
- Tokyo Tyrant+Lua拡張で転置インデックスを作成
- Tokyo Dystopiaを使う
Hyper Estraier案の長所
- まあまあ簡単
- 柔軟性もある
- 検索CGIのサンプルがついている
- 歴史があるのでネット上に情報が多い
Hyper Estraier案の短所
- 本体とインデックス以外に別途est形式のデータを作って保持する必要がある
- Hyper Estraierについての知識が別途必要
- リアルタイム検索にはあまり向かない
- 最近は更新されていない(最終更新2007年)
- 速度的にはそこそこ
Tokyo Tyrantにインデックスを張る案の長所
- 非常に簡単
- 本体のデータをそのまま活かせる
- ネット上にある程度情報がある
Tokyo Tyrantにインデックスを張る案の短所
- インデックスが非常に大きくなる
- 他の方法と比べると柔軟性が低い
- 大規模データを扱うのには向かない(主に速度的な面で)
- リアルタイム検索には全く向かない
Tokyo Tyrant+Lua拡張案の長所
- リアルタイム検索に向く
- 速度的にもオンメモリなら超高速
- 柔軟性あり(Luaスキルに依存)
Tokyo Tyrant+Lua拡張案の短所
- 大規模データを扱うのには向かない(メモリに乗らなくなってメリットが消える)
- 十分なメモリが必要
- 多少難しい(Luaの知識があればそうでもないがある人は少ない)
- ドキュメントが少ない
Tokyo Dystopia案の長所
- 最高速が見込める
- 極めて高い柔軟性
- 大規模データでも安心
- リアルタイム検索も可能
Tokyo Dystopia案の短所
- 難易度が極めて高い
- 実装に時間がかかる
- ドキュメントは無いに等しい
間違いや他の選択肢があれば是非教えてください。