根据文档https://mariadb.com/kb/en/library/fulltext-index-overview/排除的结果是部分单词。这是否意味着我们使用以下SQL查询
在短语'我的猫是棕色'中搜索'rown'SELECT mytable.mycolumn FROM mytable
WHERE MATCH (mytable.mycolumn) AGAINST('rown*' IN BOOLEAN MODE);
结果是0行?
这是正确的还是我错过了什么?我们正在使用MariaDB版本10.1.26和InnoDB引擎
答案 0 :(得分:2)
没有
FULLTEXT
索引有几个限制。 'rown'
会搜索'rown'
,'rowns'
,'rowning'
以及其他一些英语版本。但它找不到brown
。
唯一允许的通配符就是坚持到最后。例如,'var*'
会找到'variations'
。
单词前面的+
表示需要'。因此,AGAINST("+red +cow")
会找到包含两个单词的行(散布在文本中的任何位置),但不会找到只包含其中一个单词的行。
所以,你问"为什么"。答案是(1)性能和(2)效用。如果通配符可能在开始时,FULLTEXT
会减慢很多。 FULLTEXT
的主要用途是查找"单词",而不是单词的一部分。所以,你问为什么允许尾随后缀。因为实施起来非常便宜。也就是说,低成本的成本足够低。
等。