2007年10月15日月曜日

bi_gramを使ってみた.

正直FULLTEXT, LIKE検索などなどとの違いがあまり詳しくは分かっていない….
以下が認識.

 FULLTEXT:英語ベースなので半角スペースでパースされたwordによるインデックス?
  問題は日本語は単語単位で半角スペースは入らないこと.

 LIKE検索:WHERE句で使うマッチング.
  問題は大変遅いこと.

あってる?

とりあえず使ってみる.

table.txt(文字コードはeuc-jpでテスト)

CREATE TABLE t (c VARCHAR(255), FULLTEXT (c) WITH PARSER bi_gram);
INSERT INTO t VALUES('昨日はよい天気だった.');
INSERT INTO t VALUES('今日はよい天気です.');
INSERT INTO t VALUES('明日は良い天気でしょう.');


query.txt

SELECT c FROM t WHERE MATCH(c) AGAINST('天気で' IN BOOLEAN MODE);


データベース:test はmysql_install_db時に作られていた.

>mysql5 -u root -p test < table.txt
Enter password: [password]
>mysql5 -u root -p test < query.txt
Enter password: [password]
c
今日はよい天気です.
明日は良い天気でしょう.


参考:
MySQL用N-Gram全文検索プラグイン
http://mysqlbigram.googlepages.com/mysql用n-gram全文検索プラグイン

ありがとうござます.

0 件のコメント: