2011-12-04 33 views
1

によって順序私はのMySQL:MySQLで一致するキーワードを検索するための一致

SELECT * FROM `test` WHERE `keywords` REGEXP '.*(word1|word2|word3).*' LIMIT 1 

を使用し、私は最高のanswer.For例に

を与えるために、キーワードの列の中で最もマッチングのキーワードでそれらを注文したいです

キーワード///////////////応答
WORD1、WORD2 /////////// test1の
WORD1、WORD2、WORD3/test2は

私は与えられたクエリでtest2になるようにします。
どのように結果を最も一致するキーワードに並べ替えることができますか?

+4

あなたの財産、「FULLTEXT」。 –

+0

'keywords'列はコンマ区切りのリストかフリーテキストですか? –

+0

コンマ区切りリスト – user1079160

答えて

2
SELECT 
    (keywords REGEXP '.*(word1).*') 
    +(keywords REGEXP '.*(word2).*') 
    +(keywords REGEXP '.*(word3).*') as number_of_matches 
    ,keywords 
    ,field1 
    ,field2 
FROM test 
WHERE keywords REGEXP '.*(word1|word2|word3).*' 
ORDER BY number_of_matches DESC 
LIMIT 20 OFFSET 0 
関連する問題