MySQL + Senna

MySQLSennaを利用するようにしてみた

FULLTEXT インデックスの構文が変わる

FULLTEXT (`text`)
だったのが↓にかわる

Ngramのインデックス

CREATE TABLE IF NOT EXISTS `foo` (
  `id` int(11) NOT NULL auto_increment,
  `text` mediumtext NOT NULL,
  PRIMARY KEY  (`id`),
  FULLTEXT INDEX USING NGRAM (text)

) ENGINE=MyISAM  DEFAULT CHARSET=sjis;

mecabのインデックス

CREATE TABLE IF NOT EXISTS `foo` (
  `id` int(11) NOT NULL auto_increment,
  `text` mediumtext NOT NULL,
  PRIMARY KEY  (`id`),
  FULLTEXT INDEX USING MECAB (text)

) ENGINE=MyISAM  DEFAULT CHARSET=sjis;

MySQLの素のインデックス

CREATE TABLE IF NOT EXISTS `foo` (
  `id` int(11) NOT NULL auto_increment,
  `text` mediumtext NOT NULL,
  PRIMARY KEY  (`id`),
  FULLTEXT INDEX USING NO SENNA (text)

) ENGINE=MyISAM  DEFAULT CHARSET=sjis;

文字コードに関して

SJISでテーブルを作ってもとりあえず検索してくれたから大丈夫かな?

まだ、入れたばっかりなのでなんといえないけれど、テキストを成形せずに素早く検索できる利点はでかい

検索するとき

普通にMATCH〜AGAINSTでいける

SELECT * FROM foo WHERE MATCH (text) AGAINST('探したい文字列' IN BOOLEAN MODE);


tritonnのユーザーガイド