セな
senna、senna言い出してからだいぶたったのですが、正直よくわかってなかったので調べてみた。
そもそも、全文検索は全文字列から対象文字列を検索するということは普通やらない。
検索エンジンで「京都」を検索しても「東京都」は引っかからない。
これは日本語を形態素解析し切り出した単語を元に検索しているからである。
この検索の部分がsennaで形態素解析がMeCabと。
でMySQLはというと、
MySQL全文検索
全文検索にはFULLTEXTインデックスを張ってMATCHを使え。
FULLTEXTはMyISAMエンジンのみ利用可能で、インデックス結合の対象とならないぞ。
そもそもシングルバイトのみで日本語では利用できません(なんだtt
ということで、この部分でsennaががんばってくれる(はず)のです。
PostgreSQLとかどうなってるんだろうと調べてみたらみかかが力入れてやってるんですね。
みかかデータのLudiaとか導入楽そうだ。
Yahooが形態素解析Webサービス開始したり、巡回先がやたらMeCabやsennaの話題取り扱ってるんですが、やっとかんとダメですね。
いろいろわかった所でキーワードでWikipediaを見てみると全部載ってる件。
全文検索
形態素解析
わかち書き
どこぞに入ってたmysql叩いてみた。
mysql> CREATE TABLE test (
-> id INTEGER AUTO_INCREMENT,
-> PRIMARY KEY (id),
-> text TEXT NOT NULL,
-> FULLTEXT INDEX (text)
-> );
Query OK, 0 rows affected (0.47 sec)
mysql> insert test value (null, '東京都');
Query OK, 1 row affected (0.20 sec)
mysql> select * from test where match(text) against('京都');
Empty set (0.00 sec)
mysql> select * from test where match(text) against('東京');
+----+-----------+
| id | text |
+----+-----------+
| 1 | 東京都 |
+----+-----------+
1 row in set (0.00 sec)
カテゴリー: 日記