MariaDB全文搜索,不支持搜索子串?

时间:2017-09-28 08:59:43

标签: sql mariadb full-text-indexing

根据文档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引擎

1 个答案:

答案 0 :(得分:2)

没有

FULLTEXT索引有几个限制。 'rown'会搜索'rown''rowns''rowning'以及其他一些英语版本。但它找不到brown

唯一允许的通配符就是坚持到最后。例如,'var*'会找到'variations'

单词前面的+表示需要'。因此,AGAINST("+red +cow")会找到包含两个单词的行(散布在文本中的任何位置),但不会找到只包含其中一个单词的行。

所以,你问"为什么"。答案是(1)性能和(2)效用。如果通配符可能在开始时,FULLTEXT会减慢很多。 FULLTEXT的主要用途是查找"单词",而不是单词的一部分。所以,你问为什么允许尾随后缀。因为实施起来非常便宜。也就是说,低成本的成本足够低。

等。