MySQL 全文索引fulltext innodb 匹配不到结果

用户昵称不能为空 2017-03-24 05:25:30
因为这个表有 10万的文章数据,如果用like 查询十分缓慢,现状想到用 fulltext 但是发现找不到数据。



CREATE TABLE `zb_article` (
`aid` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`content_text` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '纯文本,无HTML源码',
PRIMARY KEY (`aid`),
FULLTEXT KEY `title` (`title`,`content_text`)
) ENGINE=InnoDB AUTO_INCREMENT=7578 DEFAULT CHARSET=utf8;


insert into zb_article values(NULL,'前广场工程PPP项目','(高铁站)(ppp)合同.pdf');

# 有结果
select * from zb_article where match(title,content_text) against('高铁站');
select * from zb_article where match(title,content_text) against('PPP');


# 以下为空
select * from zb_article where match(title,content_text) against('合同');
select * from zb_article where match(title,content_text) against('广场');
select * from zb_article where match(title,content_text) against('项目');


...全文
1386 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
洞妖呼叫洞妖 2019-01-24
  • 打赏
  • 举报
回复
CREATE TABLE `zb_article` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(200) DEFAULT NULL, `body` text, PRIMARY KEY (`id`), FULLTEXT KEY `title` (`title`,`body`) /*!50100 WITH PARSER `ngram` */ ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 你上面查询到结果,你看下你的相关度,是0,要用ngram支持中文才可以
cloudmissing 2017-03-30
  • 打赏
  • 举报
回复
MYSQL 全文索引是实现不了like 的效果。 全文索引只能按单词来查询。 比如 今天是星期天。 想检查 星期天 是查不出结果的, 只有 “ 今天是 星期天”, 中间有空格或其它类的间隔开,星期天被认为是一个单词,才会被查询出来
猪哈哈 2017-03-30
  • 打赏
  • 举报
回复
mysql 现在不支持中文分词。猜测字符串'(高铁站)(ppp)合同.pdf'会根据'('和')'分词,所以你的前两条查询可以得到结果。

57,064

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧