こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

MySQLのあいまい検索について

MySQLのあいまい検索について

いつもお世話になっております。
本日はMySQLのあいまい検索について質問させていただきます。

あいまい検索といっても like での検索ではなく
バとヴァ・ブとヴ・全角ハイフンと半角ハイフンなどを
同じとみなして検索することはできるのでしょうか。

たとえば、データベースには「ラブ」と登録されているが
検索キーワードは「ラヴ」と入力された場合、検索結果に「ラブ」の行を表示したいです。

PHPとMySQLで開発をするのですが、MySQLではなくPHPの処理になるのでしょうか。
カテゴリ違いでしたら申し訳ありません。

よろしくご教示お願いいたします。

[環境]
 MySQL:5.0.45
 PHP:5.1.6

投稿日時 - 2010-01-21 11:30:32

QNo.5610466

困ってます

質問者が選んだベストアンサー

私の知識では、そういったことをするなら、市販の検索エンジンなどを考えます。
以前、PanaSearchという検索エンジンを使ったことがあります。
でも調べてみると、あいまい検索に関する機能の説明はありませんでした。なくなっているのかも。

調べてみると、PHPには標準でそういったものがそなわっているとか。
http://www.jamboree.jp/cms/archives/19/comment-page-1

また、あいまい単語テーブルのようなものを用意して、あいまいの組み合わせを全部登録しておき・・・とがんばれば自力で実装するのもできなくはないと思います。

いずれにせよ、商品になるほどのアルゴリズムになりますね。

投稿日時 - 2010-01-21 13:13:07

補足

kotoby2003さん、ご回答ありがとうございます。

あいまい単語テーブルとは・・・対応表みたいなイメージでしょうか。
column1|column2
バ   |ヴァ
ブ   |ヴ

これをどのように使って実装するのでしょうか。
ちょっとイメージがわかないのですが・・・

PHPの方で実装するように考えなおした方がよさそうですね。

投稿日時 - 2010-01-21 14:32:35

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

>バとヴァ・ブとヴ・全角ハイフンと半角ハイフンなどを
>同じとみなして検索することはできるのでしょうか。

質問内容自体ロジックが固まってないので、厳しいですね。
PHPと連携するならPHP側で考慮したSQLを発行してやることです。

ただ・・・あいまい検索というはlike '%hoge%'的なことを
考えていますか?前方後方一致はSQLとしては非常に効率の悪い
処理になるので、あまりお勧めできません。
分かち書き処理を入れて全文検索をするのであれば、
あいまい部分を考慮してキーワードを追加しておけば効率は高くなると思います

投稿日時 - 2010-01-21 12:06:03

補足

yambejpさん、ご回答ありがとうございます。

MySQLで考慮するのは難しそうですね。

> ただ・・・あいまい検索というはlike '%hoge%'的なことを
> 考えていますか?前方後方一致はSQLとしては非常に効率の悪い
> 処理になるので、あまりお勧めできません。

はい。
そのように考えております。

よくあるキーワード検索などの処理は皆様どのように実装されているのでしょうか。

投稿日時 - 2010-01-21 14:24:36

あなたにオススメの質問