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ランキング
-
直角三角形でもM、NはOと一致し...
-
WHERE `年月日` = '晴' OR `年...
-
PL/SQLでの文字列比較
-
LIKEの右側にカラムを指定でき...
-
whereで全てを検索する方法
-
End Ifに対応するIfブロックが...
-
スペースによる絞り込み検索をS...
-
複数カラムに対するLIKE文の最適化
-
mysqlで50音順にorder byしたい。
-
一部のカラムでdistinctし全て...
-
INDIRECT関数の代替方法は?
-
GREATESTで NULLをスルーする方...
-
テーブルの列数を調べたい
-
SQLServerでNULLを挿入したいです
-
ROUND関数で、四捨五入ができな...
-
DBの定義のサイズを大きくし過...
-
ドロップダウンリストの連動し...
-
now()かCURRENT_TIMESTAMPか
-
AUTO_INCREMENTに0はダメ?
-
sql , insert で空行(全ての列...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
LIKEの右側にカラムを指定でき...
-
私は相手の言葉と行動が一致し...
-
mysqlで50音順にorder byしたい。
-
スペースによる絞り込み検索をS...
-
whereで全てを検索する方法
-
複数カラムに対するLIKE文の最適化
-
End Ifに対応するIfブロックが...
-
PL/SQLでの文字列比較
-
複数キーワードを複数カラムに...
-
SQLステータス:37000について
-
LIKE演算子の%について教えて...
-
Accessで文字列の一部を抽出す...
-
キーワード \\P が部分一致で...
-
社名でデータ抽出できる検索シ...
-
SELECT、特定カラムの文字列が...
-
MySQLのあいまい検索について
-
以下の式の後の部分のMySQLのSQ...
-
エクセルで2つのセルの値が同じ...
-
MySQLで住所テーブルのLIKE検索で
-
複数のフィールドの検索
おすすめ情報