質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

1回答

1681閲覧

MySQLで指定した複数の語句をいくつ含むかを調べたい

workr

総合スコア158

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2016/07/28 05:51

編集2016/07/28 06:06

「Red, Green, Blue」など数個の単語をキーワードに、MySQLに登録された複数の文章がそれぞれの単語をいくつ含むかを調べ、多く含む順に並び替えたいと考えています。
単語が「Red, Green, Blue」がすべて含まれていれば3、「Red, Green」だけなら2といった形です。

MySQLのみで行う方法は思いつきませんでした。
単純にプログラム側で単語ごとに文章を検索し、
Red、Green、Blueの3回の検索結果にすべて合致する文書は3というやり方ですがあまりいい方法には思えません。

何か良いやり方はないでしょうか?

--
補足
文章のテーブル documents は
id, title, content
になっており、本文となる content(LONGTEXT) から検索を行おうと思っています。
検索するキーワードは入力欄から与えられるのでデータベースには保管されていません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dupont_kedama

2016/07/28 05:59

テーブル定義のサンプルを提示ください。
ttyp03

2016/07/28 06:05

個数の取得は必須ではないですよね?あくまでも一致率の高い順に並べたいということですよね?
ttyp03

2016/07/28 06:10

検索ワードは常に「Red, Green, Blue」というわけではないですよね?別の単語だったり個数が違ったりするのですよね?
workr

2016/07/28 06:11

個数の取得は目的ではないですが、最低でも1個以上含んでいるのかどうかを示す目印はほしいです。
guest

回答1

0

ベストアンサー

同じワードはいくつ出てきても1回でカウントで大丈夫ですか?
この手のものは全文検索の守備範囲ですがlikeやregexpでも行けそうですね

SQL

1create table tbl(id int not null primary key,val varchar(100)); 2insert into tbl value(1,'r'),(2,'g'),(3,'b'),(4,'r r g'),(5,'r g b'); 3select id,(val regexp 'r')+(val regexp 'g')+(val regexp 'b') as x from tbl 4order by x desc;

※ごめんなさいtypo修正しました

投稿2016/07/28 06:05

編集2016/07/28 06:18
yambejp

総合スコア114839

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dupont_kedama

2016/07/28 06:14

答えがすでに出ていたので、回答は遠慮します。 yambejpさん as xの前の+は要らないんではないでしょうか。 あと、「多く含む順に並び替え」が抜けてますよ。
yambejp

2016/07/28 06:20

dupont_kedamaさん、ご指摘ありがとうございます 細かい部分なので追記とせず原文を修正しました
workr

2016/07/28 06:45

1記事中に複数回出現していても一致数は1で問題ありません。 教えていただいたSQL文で目的の動作を実現できそうです。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問