アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

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

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

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

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

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

[環境]
 MySQL:5.0.45
 PHP:5.1.6

A 回答 (2件)

私の知識では、そういったことをするなら、市販の検索エンジンなどを考えます。


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

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

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

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

この回答への補足

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

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

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

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

補足日時:2010/01/21 14:32
    • good
    • 0

>バとヴァ・ブとヴ・全角ハイフンと半角ハイフンなどを


>同じとみなして検索することはできるのでしょうか。

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

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

この回答への補足

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

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

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

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

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

補足日時:2010/01/21 14:24
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!