【问题标题】:MYSQL Match example not working. Is "Spa" a stopword?MYSQL 匹配示例不起作用。 “水疗中心”是停用词吗?
【发布时间】:2012-03-28 14:19:16
【问题描述】:
SELECT * FROM mytable WHERE match(fieldname) against('spa')

我不明白为什么这个查询没有返回任何结果。 它应该找到至少 10 行包含 spa 一词的行。Spa 不是关键字/停用词吗?

【问题讨论】:

  • 你不需要分钟吗? 4 个字符的单词匹配?
  • 你有fieldname的全文索引吗?列是否区分大小写?
  • 谢谢。这很有意义,但我不会重置系统变量,而是将某些 3 个字符关键字的例外添加到我的代码中。

标签: php mysql


【解决方案1】:

要索引的单词的最小和最大长度由 ft_min_word_len 和 ft_max_word_len 系统变量定义。 默认最小值为四个字符;默认最大值取决于版本。如果更改任一值,则必须重建 FULLTEXT 索引。例如,如果您想搜索三个字符的单词,您可以通过将以下几行放入选项文件中来设置 ft_min_word_len 变量:

[mysqld]
ft_min_word_len=3

然后重新启动服务器并重建 FULLTEXT 索引。请特别注意此列表后面的说明中有关 myisamchk 的备注。

来源:http://dev.mysql.com/doc/refman/5.1/en/fulltext-fine-tuning.html

【讨论】:

    【解决方案2】:

    不,spa 不是默认停用词之一,但 MySQL 全文搜索中有一个最小字长,我认为默认为 4:ft_min_word_length

    【讨论】:

      【解决方案3】:

      搜索的最小长度为四个字符。但是,搜索功能似乎可以更改

      Fine-Tuning MySQL Full-Text Search

      MySQL 的全文搜索功能几乎没有用户可调参数。 您可以对全文搜索行为施加更多控制,如果您 有一个 MySQL 源代码分发,因为某些更改需要源代码 代码修改。请参阅第 2.17 节,“从源代码安装 MySQL”。

      请注意,全文搜索经过精心调整 效力。在大多数情况下修改默认行为可以 实际上会降低效率。不要更改 MySQL 源,除非 你知道你在做什么。

      本节中描述的大多数全文变量必须设置为 服务器启动时间。需要重新启动服务器才能更改它们;他们 在服务器运行时无法修改。

      某些变量更改需要您重建 FULLTEXT 索引 你的桌子。稍后会给出这样做的说明 部分。

      要索引的单词的最小和最大长度由下式定义 ft_min_word_len 和 ft_max_word_len 系统变量。 (见第 5.1.3,“服务器系统变量”。)默认最小值为四个字符;默认最大值取决于版本。如果你改变 无论是哪个值,您都必须重建 FULLTEXT 索引。例如,如果 您希望三字符词可搜索,您可以设置 ft_min_word_len 变量,将以下几行放入选项中 文件:

      [mysqld] 
      ft_min_word_len=3 
      

      然后重新启动服务器并重建您的 FULLTEXT 索引。特别注意关于 myisamchk 的注释 此列表后面的说明。

      【讨论】:

        猜你喜欢
        • 2021-10-21
        • 2021-06-26
        • 1970-01-01
        • 2013-06-22
        • 2022-10-16
        • 2016-10-17
        • 2012-06-29
        • 1970-01-01
        相关资源
        最近更新 更多