語録

   


 FACE鯖のチャットルームで 日々繰り広げられる会話の中から
 思い出に残る話だけを厳選してご紹介します。
 メンバーさんも、そうじゃない方も、ひぜお立ち寄り下さい。

2008/01/02

MySQLで日本語の全文検索

カテゴリー: - face @ 05:01

MySQLで全文検索するには、
1. カラムに対して全文検索インデックス(FULLTEXT)を張ります

例)

ALTER TABLE ‘xoops_table’ ADD FULLTEXT (myindex);


2. insertやupdateすると、自動的にインデックス化されます

insert into xoops_table(myindex) values(’This is black ballpen.’);


3. 次に、MATCH … AGAINST 構文を使ったSELECT文で検索します

select * from xoops_table where match( myindex ) against( ‘black’ );


こんな感じの処理になります。
LIKE構文を使ったselect文と比較すると、数十倍高速なのです。


関連記事の表示でも使用してます


■日本語で検索する場合
上の例で、select文に「against(’映画’)」と書いても、「映画」という文字列があったとしてもヒットしません。

そこでとりあえず簡単に日本語で検索してヒットさせるには
「IN BOOLEAN MODE」を使用すると日本語でもヒットします

例)

select * from xoops_table where match( myindex )
against(’映画’ IN BOOLEAN MODE);



■日本語での制限
これは私もハマったのですが、具体例で説明しますと


例)元テーブルの文字列

[映画] ナショナルトレジャー リンカーン暗殺者の日記.avi

 ヒットする例:
 ・映画
 ・ナショナルトレジャー
 ・リンカーン暗殺者の日記

 ヒットしない例:
 ・ナショナル
 ・トレジャー
 ・暗殺者

なぜ検索でヒットしたり、しなかったりするかというと

 検索したい文字列の前後が半角文字ならヒットする
 検索したい文字列の前後に日本語があるとヒットしない


という違いによるものだとわかりました。

つまり、インデックス(FULLTEXT)化する日本語の文字列は、
事前に形態素解析 (わかち書き)しておくとヒットするようになります。


わかち書きしておくことで
[ 映画 ] ナショナル トレジャー リンカーン 暗殺者 の 日記 . avi

こんな感じに バラバラになる >> 前後が半角文字になる >> ヒットする
というわけです。


■日本語で検索の応用
上の例では、半角スペースで区切ってありましたが
[ . : など、半角文字ならヒットしましたので、その仕様をうまく使えば
「日本語でWordPressの関連記事」を表示させることが出来ます。

RelatedEntriesは、本文中にキーワードを
<!−−kw=映画 トレジャー−−> という感じに登録すると、キーワードは登録されて
<!−−映画 トレジャー−−> のように文字列だけ本文に残ります。

そこで、あとでキーワードとしてヒットさせたい文字が本文中に残ります。
先ほどの説明の通り、キーワードの前後が半角です!

つまり、「映画」と「トレジャー」というキーワードは
関連する記事としてヒットするようになります。



参考
http://www.tata​milab.jp/rnd/ar​chives/000389.h​tml
http://www.iron​hearts.com/diar​y/archives/0008​68.html


新しいウィンドウで開きます
笑えましたか?

コメント

TrackBack URL : http://face-products.com/modules/wordpress/wp-trackback.php/154

この投稿には、まだコメントが付いていません

name
comment


[関連記事]
  • 関連記事はありません …

29 queries. 0.027 sec.
Powered by WordPress Module based on WordPress ME & WordPress

検索
ログイン
ユーザID または e-mail:

パスワード:

IDとパスワードを記憶

パスワード紛失

新規登録
カレンダー
2008年 1月
« 8月   5月 »
 12345
6789101112
13141516171819
20212223242526
2728293031  
カテゴリ一覧
メインメニュー
最近の投稿
最近のコメント
月別過去ログ
アンケート
NAP最新版の感想は?
動作が軽くなった
メモリ消費が減った
便利な機能が増えた
あまり変わらない
悪くなった
語録ランキング 10