【发布时间】:2019-11-29 09:03:12
【问题描述】:
我想在我的数据库(表类型 InnoDB,对于 MyBB 论坛)中使用全文索引的 MySQL 字段的搜索中禁用停用词,但我在托管公司的共享服务器上。
关于如何禁用停用词或将默认服务器内置列表更改为自己的表的所有说明,都需要使用 GLOBAL 命令并重新启动服务器 - 作为共享服务器上的用户,我无法执行任何操作.作为共享服务器上的用户,是否有可靠的方法来执行此操作?我试过以下没有运气:
在其他帖子之后,我能够进入 cPanel > PHPMyAdmin> 并使用 SQL 查询,创建一个“user_stopwords”表:
CREATE TABLE mybb_stopwords(value VARCHAR(30)) ENGINE = INNODB;
INSERT INTO mybb_stopwords(value) VALUES ('stopword1');
但我实际上可以指示 MySQL 使用该表的唯一方法是,如果我在 SINGLE 查询中输入以下行 - 它有效,但仅适用于 SESSION。
set session innodb_ft_user_stopword_table='database/mybb_stopwords';
alter table mybb_posts engine=innodb;
alter table mybb_threads engine=innodb;
会话一结束,它就会恢复使用 GLOBAL 服务器停用词列表...
接下来,我在用户级 my.cnf 首选项文件中尝试了以下变体,我的托管服务提供商告诉我每隔几个小时读取一次用户级首选项 - 但没有效果:
[mysql] ... or mysqld ...
ft_stopword_file = "" ...or...
innodb_ft_user_stopword_table="database/mybb_stopwords"
但以上任何组合都不起作用 - 每当我检查时:
show variables like 'ft_%';
它会回复
ft_stopword_file: (built in)
MySQL 文档(我的主机服务器是 v5.6)说您可以将用户级别的首选项放在 my.cnf 文件中,它们应该可以工作 - 我只是语法不正确吗?或者用户无法在共享服务器上为停用词设置用户级首选项?
【问题讨论】:
标签: mysql innodb stop-words mybb