我尝试使用匹配来返回搜索结果。 我有一个问题,虽然它没有返回匹配文本在括号中的结果。只是摆脱括号并不是我害怕的选择。
所以运行下面的sql小提琴我希望它返回两个结果,而不是一个
CREATE TABLE `courses` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`course_code` varchar(100) NOT NULL,
`course_name` varchar(100) DEFAULT NULL,
`startdate` varchar(100) DEFAULT NULL,
`starttimestamp` varchar(45) DEFAULT NULL,
`prospectus_title` varchar(500) DEFAULT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `info` (`course_name`,`prospectus_title`,`course_code`)
) ENGINE=MyISAM AUTO_INCREMENT=981074 DEFAULT CHARSET=utf8;
INSERT INTO `courses` (`id`, `course_code`, `course_name`, `startdate`, `starttimestamp`, `prospectus_title`) VALUES
('1', '1234', 'vrqtest', 'time','time', 'vrqtest'),
('2', '5678', '(vrq)test', 'time','time','(vrq)test');
SELECT * FROM courses force index(info)
WHERE starttimestamp IS NOT NULL AND (
MATCH ( course_name ) against ('vrq*' in boolean mode ))
只返回第一个记录,但也应该返回第二个记录。
有什么想法吗?
答案 0 :(得分:1)
原因如下:
https://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_ft_min_word_len
<强>的ft_min_word_len 强>
要包含在a中的单词的最小长度 FULLTEXT指数。默认为4
(vrq)测试太短,无法匹配。添加一个额外的字符(例如(vrqa)测试),它匹配。