Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用关键字表进行mysql搜索。。。最佳方法_Mysql_Search_Keyword - Fatal编程技术网

使用关键字表进行mysql搜索。。。最佳方法

使用关键字表进行mysql搜索。。。最佳方法,mysql,search,keyword,Mysql,Search,Keyword,我正在为拍卖中的用户编写一个警报系统。我需要建立一个用户列表,其中包含与他们的关键字匹配的拍卖地块列表。 我有一个有几千行的users表,每个用户可以从第二个表中获得多个关键字。我需要搜索所有这些关键字拍卖地段表(标题和正文),有几千个地段 查询次数最少的最佳方法是什么 CREATE TABLE `auction_lots` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(50) NOT NULL, `

我正在为拍卖中的用户编写一个警报系统。我需要建立一个用户列表,其中包含与他们的关键字匹配的拍卖地块列表。 我有一个有几千行的users表,每个用户可以从第二个表中获得多个关键字。我需要搜索所有这些关键字拍卖地段表(标题和正文),有几千个地段

查询次数最少的最佳方法是什么

CREATE TABLE `auction_lots` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(50) NOT NULL,
  `body` text NOT NULL,
  PRIMARY KEY (`id`),
  FULLTEXT KEY `search` (`body`,`title`)
);

CREATE TABLE `user_accounts` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `is_active` tinyint(1) unsigned NOT NULL DEFAULT '0',
  `firstname` varchar(20) NOT NULL,
  `lastname` varchar(20) NOT NULL,
  `email` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
);

CREATE TABLE `user_keywords` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `user_id` int(10) unsigned NOT NULL,
  `keyword` varchar(20) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `user_id` (`user_id`)
);
我在想。。。2个查询,获取所有关键字,获取匹配所有关键字的所有批次,然后使用PHP构建用户批次列表 或者以某种巧妙的方式使用子查询

你认为呢

非常感谢,

罗布

你是怎么解决这个问题的

我有相同的数据和任务,不同的行业。到目前为止,我已经提出了上述内容,我对其进行了转换以适应您的数据,但它只会连接一个字段t1.body,并且当与具有数千行的表进行基准测试时,性能并不是很好。有没有更好的解决办法,我洗耳恭听

SELECT t1.id, t1.title, t2.keyword, t3.id, t3.firstname, t3.lastname, t3.email, count(t1.id) AS count 

FROM auction_lots t1 

INNER JOIN user_keywords AS t2 ON 

( t1.body LIKE CONCAT(  '%', t2.keyword,  '%' ) ) 

INNER JOIN user_accounts AS t3 ON 

t2.user_id = t3.id 

WHERE t3.is_active = 1 

group by t2.keyword, t2.user_id 

order by t2.user_id