gpt4 book ai didi

mysql - 如何在共享服务器上禁用或更改单个用户的 MySQL 全文停用词?

转载 作者:行者123 更新时间:2023-11-29 15:45:18 26 4
gpt4 key购买 nike

我想在我的数据库(表类型 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 使用该表的唯一方法是在单个查询中输入以下几行 - 它有效,但仅适用于 SESSION。

set session innodb_ft_user_stopword_table='database/mybb_stopwords';
alter table mybb_posts engine=innodb;
alter table mybb_threads engine=innodb;

session 结束后,它会恢复使用全局服务器停用词列表...

接下来,我在用户级 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 文件中,它们应该可以工作 - 我只是语法不正确吗?或者用户可能无法在共享服务器上设置用户级别的停用词首选项?

最佳答案

更好...

To create stopword lists on a table-by-table basis, create other stopword tables and use the innodb_ft_user_stopword_table option to specify the stopword table that you want to use before you create the full-text index.

--https://dev.mysql.com/doc/refman/5.6/en/fulltext-stopwords.html

如果您希望它在注销之前一直适用,请务必使用SET SESSION sysvar_innodb_ft_user_stopword_table = ...。请参阅https://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html#sysvar_innodb_ft_user_stopword_table

由于唯一的选择是 GLOBALSESSION,因此无法为 DATABASE 或“用户”设置。

关于mysql - 如何在共享服务器上禁用或更改单个用户的 MySQL 全文停用词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57128193/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com