mysql全文布尔模式搜索带通配符的两个字母的单词

ny6fqffe  于 2021-06-21  发布在  Mysql
关注(0)|答案(0)|浏览(249)

我试图解决一个问题,即搜索短单词不会产生结果。我正在运行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。
为什么会这样?发生什么事?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题