Mysql 全文搜索不起作用
因此,当我尝试使用Mysql 全文搜索不起作用,mysql,full-text-search,Mysql,Full Text Search,因此,当我尝试使用 SELECT views, keywords, title, url, thumbnail, MATCH(keywords,title) AGAINST ('%$search_value%') AS relevance FROM straight WHERE MATCH (keywords,title) AGAINST ('%$search_value%') ORDER BY relevance DESC 这是因为我没有启用全文搜索,但我似乎无
SELECT views, keywords, title, url, thumbnail,
MATCH(keywords,title) AGAINST ('%$search_value%') AS relevance
FROM straight
WHERE MATCH (keywords,title) AGAINST ('%$search_value%')
ORDER BY relevance DESC
这是因为我没有启用全文搜索,但我似乎无法启用它。当我运行下面的sql时:
ALTER TABLE straight ADD FULLTEXT(keywords, title)
我得到的答复是:
MySQL returned an empty result set (i.e. zero rows). (Query took 3.8022 sec)
然后,当尝试再次运行第一个查询时,我得到的结果是失败的
#1191 - Can't find FULLTEXT index matching the column list
我不知道为什么它没有注册。任何帮助都会很好。
谢谢
编辑:
我的表:
CREATE TABLE `straight` (
`url` varchar(80) COLLATE utf8_unicode_ci DEFAULT NULL,
`title` varchar(80) COLLATE utf8_unicode_ci DEFAULT NULL,
`keywords` varchar(80) COLLATE utf8_unicode_ci DEFAULT NULL,
`production` varchar(80) COLLATE utf8_unicode_ci DEFAULT NULL,
`categories` varchar(80) COLLATE utf8_unicode_ci DEFAULT NULL,
`views` varchar(80) COLLATE utf8_unicode_ci DEFAULT NULL,
`likes` varchar(80) COLLATE utf8_unicode_ci DEFAULT NULL,
`length` varchar(80) COLLATE utf8_unicode_ci DEFAULT NULL,
`thumbnail` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL,
`date` varchar(12) COLLATE utf8_unicode_ci DEFAULT NULL,
UNIQUE KEY `url` (`url`),
FULLTEXT KEY `url_2` (`url`,`title`,`keywords`,`production`,
`categories`,`views`,`likes`,`length`,`thumbnail`,`date`
), ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
您需要一个完全匹配要搜索的列的全文索引。您拥有的全文索引的列数超出了您的需要 尝试添加你提到的那个
ALTER TABLE straight ADD FULLTEXT(keywords, title)
然后查看表定义并确保它在那里。您正在运行哪个版本的MySQL?您能否编辑您的问题以显示
直线表的定义?在某些版本中,表必须采用MyISAM
access方法。此外,您不需要在全文@OllieJones中的反对()参数中使用%
符号。该表是MyISAM存储引擎。我不确定如何检查MySQL的版本,这是在hostgator服务器上。感谢服务器版本不在乎表是否是MyISAM。@OllieJones它还能是什么?有什么想法吗?请在创建索引后发布您的表定义。