LINUX勉強 ~その10~ centosとLAMP環境 [CENTOS de LAMP]
○senna のインストール1
mysqlにもどうやらFULLTEXTカタログ的なものがあるらしい。
これをSQL Serverで知った時はすごかった。
「検索はえぇぇぇぇ!!」とSQL Serverを初めて見直したもんだ。
だが、どうも日本語全文検索など、若干弱いようだ。
テーブルエンジンも MyISAMでないとNGとか、InnoDBをデフォで考えていたので
これは応える。トランザクションがテーブルロックしかできんとか。
しかもいちいちロック構文が必要?。めんどくせー。
だが、utf8だったらひらがな、カタカナ、全角半角等のゆらぎは同じと認識してくれるらしい。
(ならば何故日本語の識別がうまくできんのだ・・・。)
しかし、一応あるのだからと使ってみる事にしました。
既存の詳細テーブルを MyISAMに変えるわけにはいかんので、
検索用のテーブルを作成しました。
CREATE TABLE テーブル名 (
`id` INT NOT NULL COMMENT '識別子ID' ,
`search_text` TEXT NOT NULL COMMENT '検索用テキスト' ,
PRIMARY KEY (`id`) )
ENGINE = MyISAM;
CREATE FULLTEXT INDEX `tbl_FT1` ON テーブル名 (`search_text` ASC);
こんな感じですね。
で、詳細テーブルの更新があったら、都度検索用テーブルを更新しようと
企みました。
で、テーブルにはこんな感じでデータをつっこみました。
1 hogehogehogehoge
2 あああ 本日は晴天なり
3 hogeあいうえおかきくけこ
4 hoge てててて
SELECT * FROM テーブル
WHERE MATCH(search_text) AGAINST('hoge');
これだと、4しかひっかかりませんでした。
まぁ当然です。英単語と違ってスペースないからね。
やりたい事は、SELECT * FROM テーブル WHERE search_text like '%hoge%';
なので、1,3,4が帰ってきてほしい。
さてどうしたものか、、、と考えてて、sennaがヒットしました。
めんどくせーなー。
※
/etc/my.cnf を修正しておく。
[mysqld]
ft_min_word_len=1
mysqlにもどうやらFULLTEXTカタログ的なものがあるらしい。
これをSQL Serverで知った時はすごかった。
「検索はえぇぇぇぇ!!」とSQL Serverを初めて見直したもんだ。
だが、どうも日本語全文検索など、若干弱いようだ。
テーブルエンジンも MyISAMでないとNGとか、InnoDBをデフォで考えていたので
これは応える。トランザクションがテーブルロックしかできんとか。
しかもいちいちロック構文が必要?。めんどくせー。
だが、utf8だったらひらがな、カタカナ、全角半角等のゆらぎは同じと認識してくれるらしい。
(ならば何故日本語の識別がうまくできんのだ・・・。)
しかし、一応あるのだからと使ってみる事にしました。
既存の詳細テーブルを MyISAMに変えるわけにはいかんので、
検索用のテーブルを作成しました。
CREATE TABLE テーブル名 (
`id` INT NOT NULL COMMENT '識別子ID' ,
`search_text` TEXT NOT NULL COMMENT '検索用テキスト' ,
PRIMARY KEY (`id`) )
ENGINE = MyISAM;
CREATE FULLTEXT INDEX `tbl_FT1` ON テーブル名 (`search_text` ASC);
こんな感じですね。
で、詳細テーブルの更新があったら、都度検索用テーブルを更新しようと
企みました。
で、テーブルにはこんな感じでデータをつっこみました。
1 hogehogehogehoge
2 あああ 本日は晴天なり
3 hogeあいうえおかきくけこ
4 hoge てててて
SELECT * FROM テーブル
WHERE MATCH(search_text) AGAINST('hoge');
これだと、4しかひっかかりませんでした。
まぁ当然です。英単語と違ってスペースないからね。
やりたい事は、SELECT * FROM テーブル WHERE search_text like '%hoge%';
なので、1,3,4が帰ってきてほしい。
さてどうしたものか、、、と考えてて、sennaがヒットしました。
めんどくせーなー。
※
/etc/my.cnf を修正しておく。
[mysqld]
ft_min_word_len=1
コメント 0