SSブログ

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
nice!(1)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 1

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

引っ越しトレーニング 09-11-19 ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。