我试图解决一个问题,即搜索短单词不会产生结果。我正在运行mariadb 10.0.34,我有 ft_min_word_len
设置为 2
,并得到以下结果:
CREATE TABLE `ft_test` (
`name` varchar(128) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
ALTER TABLE `ft_test` ADD FULLTEXT KEY `name` (`name`);
INSERT INTO `ft_test` (`name`) VALUES ('aa'),('bb'),('abc'),('efgh'),('ab'),('abcd');
SELECT * FROM `ft_test` WHERE MATCH (name) AGAINST ("+ab*" IN BOOLEAN MODE);
-- Returns "abc" and "abcd" but NOT "ab".
SELECT * FROM `ft_test` WHERE MATCH (name) AGAINST ("+aa*" IN BOOLEAN MODE);
-- No results
SELECT * FROM `ft_test` WHERE MATCH (name) AGAINST ("+bb*" IN BOOLEAN MODE);
-- No results
SELECT * FROM `ft_test` WHERE MATCH (name) AGAINST ("+abc*" IN BOOLEAN MODE);
-- Returns "abc" and "abcd".
SELECT * FROM `ft_test` WHERE MATCH (name) AGAINST ("+abcd*" IN BOOLEAN MODE);
-- Returns "abcd".
手册上说通配符 *
字符可以匹配零个或多个字母 +*
结果包括 `` 行,和 +d*
包括 d
行,但两个字母的搜索与两个字母的行不匹配,而且据我从文档中看到的,上面没有一个是stopwords。
为什么会这样?发生什么事?
暂无答案!
目前还没有任何答案,快来回答吧!