MariaDB Fulltext Search,不支持子字符串搜索?
MariaDB Fulltext Search, does not support searches of substrings?
根据文档 https://mariadb.com/kb/en/library/fulltext-index-overview/ 排除的结果是部分单词。当我们用下面的SQL查询
在短语'My cat is brown'中搜索'rown'时,是否意味着
SELECT mytable.mycolumn FROM mytable
WHERE MATCH (mytable.mycolumn) AGAINST('rown*' IN BOOLEAN MODE);
结果是0行?
这是正确的还是我遗漏了什么?我们正在使用 MariaDB 版本 10.1.26 和 InnoDB Engine
没有
FULLTEXT
索引有几个限制。 'rown'
搜索 'rown'
、'rowns'
、'rowning'
和其他一些英语变体。但是它不会找到 brown
.
唯一允许的通配符是把它贴在最后。例如,'var*'
会找到 'variations'
.
一个词前面加一个+
就变成了'required'。因此,AGAINST("+red +cow")
将找到包含这两个词的行(散布在文本中的任何位置),但不会找到仅包含一个词的行。
所以,你问 "why"。答案是 (1) 性能和 (2) 效用。如果通配符可以在开头,FULLTEXT
会减慢很多。 FULLTEXT
的主要用途是查找 "words",而不是单词的一部分。所以,你问为什么允许尾随后缀。因为实施起来非常便宜。也就是说,成本对于低效用来说足够低。
等
根据文档 https://mariadb.com/kb/en/library/fulltext-index-overview/ 排除的结果是部分单词。当我们用下面的SQL查询
在短语'My cat is brown'中搜索'rown'时,是否意味着SELECT mytable.mycolumn FROM mytable
WHERE MATCH (mytable.mycolumn) AGAINST('rown*' IN BOOLEAN MODE);
结果是0行?
这是正确的还是我遗漏了什么?我们正在使用 MariaDB 版本 10.1.26 和 InnoDB Engine
没有
FULLTEXT
索引有几个限制。 'rown'
搜索 'rown'
、'rowns'
、'rowning'
和其他一些英语变体。但是它不会找到 brown
.
唯一允许的通配符是把它贴在最后。例如,'var*'
会找到 'variations'
.
一个词前面加一个+
就变成了'required'。因此,AGAINST("+red +cow")
将找到包含这两个词的行(散布在文本中的任何位置),但不会找到仅包含一个词的行。
所以,你问 "why"。答案是 (1) 性能和 (2) 效用。如果通配符可以在开头,FULLTEXT
会减慢很多。 FULLTEXT
的主要用途是查找 "words",而不是单词的一部分。所以,你问为什么允许尾随后缀。因为实施起来非常便宜。也就是说,成本对于低效用来说足够低。
等