最終更新:2011-04-01 (金) 21:17:31 (4766d)  

Tritonn
Top / Tritonn

MySQL(MyISAM) + Senna = Tritonn

http://qwik.jp/tritonn/

TritonnはMySQLから全文検索エンジンSennaを利用可能にするための改造を行うプロジェクトです。

後継

  CREATE TABLE search (
    id INTEGER AUTO_INCREMENT,
    PRIMARY KEY (id),
    text TEXT NOT NULL,
    FULLTEXT INDEX USING NGRAM (text)
  );
<?php
 $query = 'MATCH ( text ) AGAINST ("foo")' ; 
 $query = 'MATCH ( text ) AGAINST ("+foo +bar" IN BLOOLEAN MODE)' ;//AND検索のときはBOOLEAN MODE

 $opt = array(
    'conditions' => array( $query ),
 );
 $search = $this->Search->find('all',$opt);

メモ

  • MySQLのFULLTEXTインデックスはスペース区切りなので日本語が正しくインデックスされない
  • LIKEキーワードだとフルスキャンが発生する

パッチ

  • Tritonnでは、MySQLFULLTEXT?インデックスの処理にMyISAMのビルトインのFULLTEXTではなく、Sennaを使うようにソースコードを改変しています。
  • またSennaを管理するためのSQLコマンドや変数などを追加するために、MySQLの上位層のソースファイルに対しても改変を行っていますが、本質的な部分においては基本的にはMyISAMに対する改造という内容になっています。
  • 従いまして、MySQLにこのパッチを適用した場合、変わるのは基本的にはMyISAMのFULLTEXTインデックスの振る舞いのみで、後はこれまでと同様となっています。またこの図をご覧頂くとお分かりになるかと思いますが、MySQLへアクセスするアプリケーションから見ると、MySQLの上位層がSennaを隠蔽しているため、アプリケーション側で特にSennaを意識する必要はありません。

http://qwik.jp/tritonn/about.files/mysql-senna-arch.gif

完全転置インデックス

  • インデックス内に各キーワードを含むレコードの識別子だけでなく、そのレコード内でのそのキーワードの出現位置についても記録する方式のインデックス

開発

  • 住友情報システム?

Tritonnとは

参考