MySQLのあいまい検索について
いつもお世話になっております。
本日はMySQLのあいまい検索について質問させていただきます。
あいまい検索といっても like での検索ではなく
バとヴァ・ブとヴ・全角ハイフンと半角ハイフンなどを
同じとみなして検索することはできるのでしょうか。
たとえば、データベースには「ラブ」と登録されているが
検索キーワードは「ラヴ」と入力された場合、検索結果に「ラブ」の行を表示したいです。
PHPとMySQLで開発をするのですが、MySQLではなくPHPの処理になるのでしょうか。
カテゴリ違いでしたら申し訳ありません。
よろしくご教示お願いいたします。
[環境]
MySQL:5.0.45
PHP:5.1.6
No.2ベストアンサー
- 回答日時:
私の知識では、そういったことをするなら、市販の検索エンジンなどを考えます。
以前、PanaSearchという検索エンジンを使ったことがあります。
でも調べてみると、あいまい検索に関する機能の説明はありませんでした。なくなっているのかも。
調べてみると、PHPには標準でそういったものがそなわっているとか。
http://www.jamboree.jp/cms/archives/19/comment-p …
また、あいまい単語テーブルのようなものを用意して、あいまいの組み合わせを全部登録しておき・・・とがんばれば自力で実装するのもできなくはないと思います。
いずれにせよ、商品になるほどのアルゴリズムになりますね。
この回答への補足
kotoby2003さん、ご回答ありがとうございます。
あいまい単語テーブルとは・・・対応表みたいなイメージでしょうか。
column1|column2
バ |ヴァ
ブ |ヴ
これをどのように使って実装するのでしょうか。
ちょっとイメージがわかないのですが・・・
PHPの方で実装するように考えなおした方がよさそうですね。
No.1
- 回答日時:
>バとヴァ・ブとヴ・全角ハイフンと半角ハイフンなどを
>同じとみなして検索することはできるのでしょうか。
質問内容自体ロジックが固まってないので、厳しいですね。
PHPと連携するならPHP側で考慮したSQLを発行してやることです。
ただ・・・あいまい検索というはlike '%hoge%'的なことを
考えていますか?前方後方一致はSQLとしては非常に効率の悪い
処理になるので、あまりお勧めできません。
分かち書き処理を入れて全文検索をするのであれば、
あいまい部分を考慮してキーワードを追加しておけば効率は高くなると思います
この回答への補足
yambejpさん、ご回答ありがとうございます。
MySQLで考慮するのは難しそうですね。
> ただ・・・あいまい検索というはlike '%hoge%'的なことを
> 考えていますか?前方後方一致はSQLとしては非常に効率の悪い
> 処理になるので、あまりお勧めできません。
はい。
そのように考えております。
よくあるキーワード検索などの処理は皆様どのように実装されているのでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Excel(エクセル) セルの値をグーグルで検索するエクセルVBAについて! 2 2022/08/01 21:41
- X(旧Twitter) Twitter検索から除外 1 2023/08/18 11:00
- MySQL mysqlがインストールされているのかどうか 1 2023/06/05 14:19
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- その他(ブログ) ブログを始めたいと思うのですが、下記のような場合のおすすめブログサービスを教えてください。 収益化な 4 2023/04/10 10:01
- SEO 検索エンジン反映遅い 1 2022/06/04 07:35
- MySQL mysqlがインストールされているのかわかりません 1 2023/06/05 02:26
- YouTube 虫の動画について書いていますので、苦手な方は注意してください。 YouTubeの検索結果にしつこく出 1 2023/03/22 06:53
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
LIKEの右側にカラムを指定でき...
-
複数カラムに対するLIKE文の最適化
-
PL/SQLでの文字列比較
-
group byで最後のレコードを抽...
-
一部のカラムでdistinctし全て...
-
BULK INSERT時のNull許容について
-
now()かCURRENT_TIMESTAMPか
-
Accessの「IIF」に相当するSQL...
-
INDIRECT関数の代替方法は?
-
SELECT文で、指定カラム以外の...
-
テーブルの列数を調べたい
-
DB2のBLOB型カラムに格納された...
-
UNIONする際、片方テーブルしか...
-
SQLでカラムを追加し、条件に合...
-
【Transact-sql】 where条件、i...
-
SQL、oracleにて文字列操作(連...
-
SQLServerでNULLを挿入したいです
-
order byでカラムが空の場合は...
-
create tableのフィールド名
-
SQLiteで「UPDATE table1 SET c...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
LIKEの右側にカラムを指定でき...
-
スペースによる絞り込み検索をS...
-
mysqlで50音順にorder byしたい。
-
whereで全てを検索する方法
-
複数キーワードを複数カラムに...
-
PL/SQLでの文字列比較
-
複数カラムに対するLIKE文の最適化
-
LIKE演算子の%について教えて...
-
End Ifに対応するIfブロックが...
-
SQLステータス:37000について
-
MySQLのあいまい検索について
-
Accessで文字列の一部を抽出す...
-
SQLの範囲置換の文について
-
Access & ADOで「'」のLIKE検索
-
MySQLで複数フィールドから同一...
-
SELECT、特定カラムの文字列が...
-
場合の数 中学入試 5枚のカード
-
スペース区切りの検索について
-
Like "*あ*"は、何一致というの...
-
MySQL 配列もどきを条件式に
おすすめ情報