我基本上想要计算成功的ors数量,以便我可以告诉每个项目与搜索查询的相关性。这是表结构:
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
这是一行的例子:
`id` = 1
`listing_id` = 1,
`name` = 'listing test',
`description` = 'listing desc',
`image` = '',
`image_caption` = '',
`keywords` = 'youtube video fun'
这就是我希望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
答案 0 :(得分:5)
像这样的东西。 (我使用“score”而不是“count”,因为“count”是一个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
请注意,此查询将非常慢,因为它必须检查每一行。