2011-07-09 12 views
2

私は基本的に成功したorsの数を数えて、各項目の検索クエリへの関連性を伝えることができます。これは、テーブル構造である:mysqlを使用すると、成功したORの数をどのように数えますか?

CREATE TABLE `items` (
`id` int(11) NOT NULL auto_increment, 
`listing_id` int(11) NOT NULL, 
`name` varchar(256) NOT NULL, 
`description` varchar(1000) NOT NULL, 
`image` varchar(100) NOT NULL, 
`image_caption` varchar(100) NOT NULL, 
`keywords` varchar(10000) NOT NULL, 
PRIMARY KEY (`id`) 
) ENGINE=MyISAM AUTO_INCREMENT=90 DEFAULT CHARSET=latin1 

、これは列の例です。

そして、これは私がmysqlは擬似コードで何をしたいです:

SELECT id,name,description AND count FROM items WHERE `keywords` LIKE '%video%' AND LIKE '%keyword2%' AND LIKE '%youtube%' AND LIKE '%text%' 

そして、私はこれらの結果を得たい:

`id` = 1 
`name` = 'listing test', 
`description` = 'listing desc', 
`count` = 2 

答えて

5

このようなもの。 (「カウント」はSQL関数名ですので、私が代わりに「カウント」の「スコア」を使用。)

SELECT id, name, description, (
    IF(keywords LIKE '%video%', 1, 0) 
    + IF(keywords LIKE '%keyword2%', 1, 0) 
    + IF(keywords LIKE '%keyword3%', 1, 0) 
) score 
FROM table 
HAVING score > 0 

注意をそれはすべての行を調べる必要があり、このクエリは、非常に遅くなること。

+0

これは機能しているようですが、どれくらい時間がかかりますか?今は大丈夫だと思うけど、それは私のテーブルには非常に多くの行がありません – Yesterday

関連する問題