【问题标题】:MariaDB Fulltext Search, does not support searches of substrings?MariaDB全文搜索,不支持子字符串搜索?
【发布时间】:2017-09-28 08:59:43
【问题描述】:

根据文档https://mariadb.com/kb/en/library/fulltext-index-overview/,排除的结果是部分单词。这是否意味着当我们使用以下 SQL Query 在短语“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

【问题讨论】:

    标签: sql mariadb full-text-indexing


    【解决方案1】:

    没有。

    FULLTEXT 索引有几个限制。 'rown' 搜索 'rown'、'rowns'、'rowning' 和其他一些英语变体。但它不会找到brown。

    唯一允许的通配符是将其粘贴在末尾。例如,'var*' 将找到 'variations'。

    单词前面的+ 使其成为“必需”。因此,AGAINST("+red +cow") 将查找包含两个单词的行(分散在文本中的任何位置),但不会查找仅包含一个单词的行。

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

    等等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-07
      • 2011-07-18
      • 2018-01-08
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 2011-02-22
      相关资源
      最近更新 更多