我基本上想要计算成功的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
Run Code Online (Sandbox Code Playgroud)
这是一个行的例子:
`id` = 1
`listing_id` = 1,
`name` = 'listing test',
`description` = 'listing desc',
`image` = '',
`image_caption` = '',
`keywords` = 'youtube video fun'
Run Code Online (Sandbox Code Playgroud)
这就是我想要mysql在伪代码中做的事情:
SELECT id,name,description AND count FROM items WHERE `keywords` LIKE '%video%' AND LIKE '%keyword2%' AND LIKE '%youtube%' AND LIKE '%text%'
Run Code Online (Sandbox Code Playgroud)
我希望得到这些结果:
`id` = 1
`name` = 'listing test',
`description` = 'listing desc',
`count` = 2
Run Code Online (Sandbox Code Playgroud)
像这样的东西.(我使用"得分"而不是"计数",因为"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
Run Code Online (Sandbox Code Playgroud)
请注意,此查询将非常慢,因为它必须检查每一行.