MySQL SQL質問応答スレ [無断転載禁止]©2ch.net (148レス)
1-

86
(3): 2022/09/25(日)16:06 ID:??? AAS
検索方法で質問です
例えば「カツカレー」で検索すると
「カレー」のレコードを
「三色エビチリ」で検索すると
「エビチリ」のレコードを得たいのですがいい方法はありますでしょうか

テーブルの方は
カレー 情報…
エビチリ 情報…
オムライス 情報…
となってます
87: 2022/09/25(日)20:24 ID:DVn290av(1/2) AAS
>>86
それマスタテーブルの存在がわかってないだけだろ
88
(1): 2022/09/25(日)20:25 ID:DVn290av(2/2) AAS
>>86
集合演算子を知ってますか?
89
(1): 2022/09/26(月)01:13 ID:??? AAS
>>86
形態素解析の話?
それとも「カツカレー」という単語を「カレー」にマッピングするテーブルを作る話?
90
(2): 2022/09/26(月)08:08 ID:??? AAS
>>88
集合演算子で検索したけど
分からなかった
>>89
あ、いえ例えばカレーで検索してカツカレーを求めることはできますけど
正規表現とか使って逆はできないかな
という質問です
マッピングテーブルみたいなの作るしかないのかな
91
(1): 2022/09/26(月)16:12 ID:CFgRtkvv(1/4) AAS
>>90
カツカレーの情報が、エビチリ情報テーブルに存在しないデータの持ち方ならSELECT文をUNION ALLで並べればいいだけだろ。

セレクト 列名 カレー情報 where 列名 イコール カツカレー
 ユニオンALL
セレクト 列名 エビチリ情報 where 列名
イコール カツカレー

俺は答えを教えるのは本人にとってよくないと思っているから、本当は書きたない。

そもそもそのデータモデリングは自分で考えたのか?
92: 2022/09/26(月)16:15 ID:CFgRtkvv(2/4) AAS
UNIONなどの集合演算子は列名が揃ってないと使えないからな
93: 2022/09/26(月)17:20 ID:??? AAS
>>91
おまえどう考えても勘違いしてるぞ
上塗り重ねず自重しとけ
94: 2022/09/26(月)17:31 ID:??? AAS
カツカレーだとライスにはマッチしないんだな
95
(2): 2022/09/26(月)17:42 ID:??? AAS
>>90
選択肢はブルートフォース、n-gram、 形態素解析、マッピングテーブルくらいかな
どれを選ぶかは用途次第

ブルートフォースは「カツカレー」というキーワードとテーブルの列名を1件1件比較して
キーワード内の部分文字列が列名に合致するかどうかを判断していく
めちゃ遅くなるけどデータ量と要求速度によってはこれでいい場合もある

n-gramで例えば文字単位で3文字ずつのまとまり(trigram)に分解すれば
「カツカレー」は「カツカ」「ツカレ」「カレー」の3つになる
この3つのキーワードともとの単語でテーブルを検索して合致するものがあるかどうか見る

形態素解析はそれ用のライブラリ使って
省4
96
(1): 2022/09/26(月)18:45 ID:CFgRtkvv(3/4) AAS
動的に列名違いのSQLを組み立てるなんてありえない。
97
(1): 2022/09/26(月)19:18 ID:??? AAS
>>95 >>96
SQLで出来ないことが分かっただけでも収穫ですが
さらに解決のヒントをいただきありがとうございます

ブルートフォースって言うのですか
PHPで作ってますがロジックで判断するやり方はちらっと頭に浮かんだのですが
性能がめちゃ心配で脳内却下してました
n-gramはちょっと分かりませんでした
形態素は解析エンジンを信用しきれなくて…
というわけで力作業でマッピングテーブルを作るか
それかブルートフォースでやるか
省1
98: 2022/09/26(月)19:38 ID:CFgRtkvv(4/4) AAS
やはり自作自演か
99
(1): 2022/09/26(月)22:34 ID:??? AAS
>>97
SQLでというか>>95の選択肢はどれもストアドやUDF使えばDB側でできるよ
特にブルートフォースでやるならDB側でやったほうが性能的には断然いい
100: 2022/09/26(月)22:48 ID:??? AAS
設計の最初からやり直した方が速そう
101
(1): 2022/09/27(火)19:57 ID:??? AAS
>>99
ストアドとかUDFとか知らなかった
教えてくれてありがとう
102: 2022/09/27(火)21:49 ID:qnEHOR6B(1) AAS
>>101
MySQLのストアドプロシージャは最悪の仕様だから覚悟しとけ!
103: 2022/09/29(木)00:05 ID:??? AAS
しらんけどこういう回答でどうなん?
104: 2022/09/29(木)00:10 ID:??? AAS
フライとかが登録されたTestというテーブル作っておいて

whereの中に "エビフライ" ライク コンキャット( パーセントフライパーセント)
みたいな値をかく。このエビフライっていうところが検索文字列ね
これでフライがとれるだろ?こういうことじゃないの?
105: 2022/09/29(木)00:10 ID:??? AAS
なおSQLで書こうとするとはじかれて書き込めなかった
わかりにくいがすまん
1-
あと 43 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.622s*