【问题标题】:disable mysql innodb stopwords for a table禁用表的 mysql innodb 停用词
【发布时间】:2015-04-30 21:05:24
【问题描述】:

我想禁用全文索引的停用词。数据库在 mysql 5.6 上运行 innodb。

我只想为一张桌子禁用它。我找到了 innodb_ft_user_stopword_table 的 mysql 文档,但我对如何让我的索引使用这个表感到困惑。我假设我可以简单地创建一个空表来禁用此功能。

全文索引当前存在并且尊重停用词。

我认为这个过程应该是这样的:

  1. 创建空的停用词表
  2. 如何将索引指向新的停用词表
  3. 重新构建索引(或删除并重新创建,在这种情况下执行此处的第 2 步。)

感谢您抽出宝贵时间阅读本文。

【问题讨论】:

  • 最短的方法是更新/etc/mysql/my.cnf然后设置ft_stopword_file = ""然后重启mysqlsudo /etc/init.d/mysql restart最后修复表repair table table_name

标签: mysql mysql-5.6


【解决方案1】:

只是为了澄清 BK435 的答案,您没有将表设置为 innodb_ft_enable_stopword 变量,而是启用它,然后将其设置为 innodb_ft_server_stopword_table 或 innodb_ft_user_stopword_table:

innodb_ft_enable_stopword=1
innodb_ft_server_stopword_table=db_name/table_name
innodb_ft_user_stopword_table=db_name/table_name

对于用户停用词表,我没有在文档中看到您指定要影响的表...它说它是每个表,但没有具体说明您是如何做到的...

我在这篇文章中写了更多细节:

MySQL 5.6 Full Text Search Issue when Searching for the word "the" in PHP

【讨论】:

    【解决方案2】:

    来自dev.mysql

    innodb_ft_enable_stopword

    指定一组停用词在创建索引时与 InnoDB FULLTEXT 索引相关联。如果设置了 innodb_ft_user_stopword_table 选项,则从该表中获取停用词。否则,如果设置了 innodb_ft_server_stopword_table 选项,则从该表中获取停用词。否则,将使用一组内置的默认停用词。

    您的第 1 步是正确的。在第 2 步中,您需要在 my.cnf 文件中设置参数 innodb_ft_enable_stopword = yournewtableofwords,然后重新启动 mysql 以使更改生效。在第 3 步中,您是正确的,这两个选项似乎都可以接受。您可以更新统计信息或删除并重新创建索引。您可能要考虑后者,而不是前者,以确保确定。

    您还可以从 MariaDB 的网站上找到此链接 Here,该链接对全文索引的停用词也很有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-02
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多