MySQL 全文検索 ことはじめ 日本 MySQL ユーザ会  2009 冬 Tetsuro IKEDA @ Tritonn Project
セミナーの目的 多くの人に全文検索の便利さを知ってもらいたい MySQL でも全文検索ができることの良さを知ってもらいたい Tritonn プロジェクトを紹介したい
全文検索って何ですか? インターネット検索( Google 、 Yahoo! とか ) メール検索( Thunderbird 、 Becky! とか) 友人検索( mixi とか) 日記検索( SNS/BLOG 系全般) キーワードを投げるとそれに関連したデータを返してくれるもの 検索対象のデータ構造とかはあまり意識しなくてよい
普通の検索と全文検索の違い DBMS のよくある検索 データを分解して各カラムに格納しておく カラムの値と一致しているかとか 数値が指定範囲に該当するかとか “ hit する”  or ”hit しない” 全文検索 テキストをそのまま使う 検索キーワードを含むかどうか キーワードとの関連度の高いものを優先
全文検索の良さ – 簡単・高機能 利用者側 キーワードを与えるだけでOK 細かいことを指定しなくてOK 関連性の高いデータを返してもらえる 開発側 対象データを構造化しておく必要がない いろんなデータに対応できる 全文検索インデックスを使えば性能もGood!
全文検索のためのソフトウェア 商用 FAST Sedue OSS Namazu Lucene Hyper Estraier Rast MySQL Senna Ludia (PostgreSQL+Senna) Tritonn (MySQL+Senna)
MySQL で全文検索できることの意味 普通の全文検索エンジン 独自の検索クエリ /API 独自のデータ管理方式 要するに独自の世界 MySQL で全文検索 MySQL に SQL 文を投げる テーブル、カラム、結合可能 MySQL を通じたデータ管理 MySQL 方式のバックアップ レプリケーションできる MySQL の世界
MySQL で全文検索するには… FULLTEXT インデックスというのがあります ただしこれは分かち書きされたデータだけ 事前に分かち書きしたデータはそのまま OK MySQL 5.1 の Fulltext parser plugin を利用 参照: MySQL full-text parser plugin collection 転置インデックステーブルを作ってトリガーで N-gram にする 参照:「 MySQL   InnoDB だけで 全文検索   -  SH2 の日記 」 Tritonn を利用 MySQL 内部で全文検索エンジン Senna を利用
Tritonn プロジェクト Senna の MySQL バインディングパッチを継承 2007 年 4 月に初回リリース(最新は 1.0.12) 安心の QA (品質保証)体制 住商情報システムによる有償サポートあり Sun Microsystems によるバイナリ認定取得 MySQL( 本家 ) のソースを改造 Senna/MeCab を同梱 国内大手 WEB サイト、企業での採用実績
Tritonn プロジェクトが提供している物 MySQL 改造パッチ MySQL( 改造版)ソース一式 Linux x86/x86_64 向け tarball バイナリ Linux x86/x86_64 向け RPM パッケージ Windows 32/64 向け zip バイナリ 日本語ドキュメント http://qwik.jp/tritonn/
ありがとうございました Q & A

MySQL全文検索ことはじめ

  • 1.
    MySQL 全文検索 ことはじめ日本 MySQL ユーザ会 2009 冬 Tetsuro IKEDA @ Tritonn Project
  • 2.
    セミナーの目的 多くの人に全文検索の便利さを知ってもらいたい MySQLでも全文検索ができることの良さを知ってもらいたい Tritonn プロジェクトを紹介したい
  • 3.
    全文検索って何ですか? インターネット検索( Google、 Yahoo! とか ) メール検索( Thunderbird 、 Becky! とか) 友人検索( mixi とか) 日記検索( SNS/BLOG 系全般) キーワードを投げるとそれに関連したデータを返してくれるもの 検索対象のデータ構造とかはあまり意識しなくてよい
  • 4.
    普通の検索と全文検索の違い DBMS のよくある検索データを分解して各カラムに格納しておく カラムの値と一致しているかとか 数値が指定範囲に該当するかとか “ hit する” or ”hit しない” 全文検索 テキストをそのまま使う 検索キーワードを含むかどうか キーワードとの関連度の高いものを優先
  • 5.
    全文検索の良さ – 簡単・高機能利用者側 キーワードを与えるだけでOK 細かいことを指定しなくてOK 関連性の高いデータを返してもらえる 開発側 対象データを構造化しておく必要がない いろんなデータに対応できる 全文検索インデックスを使えば性能もGood!
  • 6.
    全文検索のためのソフトウェア 商用 FASTSedue OSS Namazu Lucene Hyper Estraier Rast MySQL Senna Ludia (PostgreSQL+Senna) Tritonn (MySQL+Senna)
  • 7.
    MySQL で全文検索できることの意味 普通の全文検索エンジン独自の検索クエリ /API 独自のデータ管理方式 要するに独自の世界 MySQL で全文検索 MySQL に SQL 文を投げる テーブル、カラム、結合可能 MySQL を通じたデータ管理 MySQL 方式のバックアップ レプリケーションできる MySQL の世界
  • 8.
    MySQL で全文検索するには… FULLTEXTインデックスというのがあります ただしこれは分かち書きされたデータだけ 事前に分かち書きしたデータはそのまま OK MySQL 5.1 の Fulltext parser plugin を利用 参照: MySQL full-text parser plugin collection 転置インデックステーブルを作ってトリガーで N-gram にする 参照:「 MySQL InnoDB だけで 全文検索 - SH2 の日記 」 Tritonn を利用 MySQL 内部で全文検索エンジン Senna を利用
  • 9.
    Tritonn プロジェクト Sennaの MySQL バインディングパッチを継承 2007 年 4 月に初回リリース(最新は 1.0.12) 安心の QA (品質保証)体制 住商情報システムによる有償サポートあり Sun Microsystems によるバイナリ認定取得 MySQL( 本家 ) のソースを改造 Senna/MeCab を同梱 国内大手 WEB サイト、企業での採用実績
  • 10.
    Tritonn プロジェクトが提供している物 MySQL改造パッチ MySQL( 改造版)ソース一式 Linux x86/x86_64 向け tarball バイナリ Linux x86/x86_64 向け RPM パッケージ Windows 32/64 向け zip バイナリ 日本語ドキュメント http://qwik.jp/tritonn/
  • 11.