DROP PLUGIN plugin_name TYPE 'plugin_type'
标记指定的插件以便卸载。卸载过程不是即时的,因为可能仍有并发查询在使用它。然而,执行DROP后,新查询将不再能够访问该插件。随后,当所有正在进行的涉及该插件的查询完成后,插件将被卸载。如果指定库中的所有插件都被卸载,该库也将被自动卸载。
mysql> DROP PLUGIN myranker TYPE 'ranker';
Query OK, 0 rows affected (0.00 sec)
DELETE BUDDY PLUGIN <username/package name on https://packagist.org/>
注意:DELETE BUDDY PLUGIN 需要 Manticore Buddy。如果操作无效,请确保 Buddy 已安装。
此操作会立即且永久地移除安装在 plugin_dir 中的插件。移除后,插件的功能将不再可用。
DELETE BUDDY PLUGIN manticoresoftware/buddy-plugin-show-hostname
Last modified: August 28, 2025
为了简化对 Buddy 插件的控制,特别是在开发新插件或修改现有插件时,提供了启用和禁用 Buddy 插件的命令。这些命令在运行时临时生效,重启守护进程或执行 Buddy 重置后将恢复默认。要永久禁用插件,必须将其移除。
您需要插件的完全限定包名来启用或禁用它。要查找包名,可以运行 SHOW BUDDY PLUGINS 查询,并查看 package 字段中的全限定名称。例如,SHOW 插件的完全限定名称是 manticoresoftware/buddy-plugin-show。
ENABLE BUDDY PLUGIN <username/package name on https://packagist.org/>
注意:ENABLE BUDDY PLUGIN 需要 Manticore Buddy。如果不起作用,请确保已安装 Buddy。
此命令重新激活之前禁用的 Buddy 插件,使其能够再次处理您的请求。
ENABLE BUDDY PLUGIN manticoresoftware/buddy-plugin-show
DISABLE BUDDY PLUGIN <username/package name on https://packagist.org/>
此命令停用一个活动的 Buddy 插件,阻止其处理后续的任何请求。
DISABLE BUDDY PLUGIN manticoresoftware/buddy-plugin-show
禁用后,如果尝试执行 SHOW QUERIES 命令,将会遇到错误,因为插件已被禁用。
Last modified: August 28, 2025
RELOAD PLUGINS FROM SONAME 'plugin_library'
从给定库重新加载所有插件(UDF、排序器等)。从某种意义上说,重新加载过程是事务性的,确保:
- 所有插件都成功更新到新版本;
- 更新是原子的,意味着所有插件同时被替换。该原子性确保使用重新加载库中多个函数的查询不会混用旧版本和新版本。
在 RELOAD 期间,插件集保证是一致的;它们要么全部是旧的,要么全部是新的。
重新加载过程也是无缝的,因为某个版本的重新加载插件将始终可用于并发查询,无任何临时中断。这比使用 DROP 和 CREATE 语句对重加载的改进要好。使用那些语句时,在 DROP 和随后的 CREATE 之间有一个短暂窗口期,在此期间查询在技术上引用一个未知插件,因此会失败。
如果有任何失败,RELOAD PLUGINS 不执行任何操作,保留旧插件,并报告错误。
在 Windows 上,覆盖或删除当前正在使用的 DLL 库可能会有问题。然而,你仍然可以重命名它,将新版本置于旧名称下,然后 RELOAD 将起作用。成功重新加载后,你也可以删除重命名的旧库。
mysql> RELOAD PLUGINS FROM SONAME 'udfexample.dll';
Query OK, 0 rows affected (0.00 sec)
Last modified: August 28, 2025
排序插件允许您实现一个自定义排序器,该排序器接收文档中匹配的所有关键词的出现情况,并计算一个 WEIGHT() 值。它们可以按照以下方式调用:
SELECT id, attr1 FROM test WHERE match('hello') OPTION ranker=myranker('option1=1');
调用流程如下:
XXX_init() 在每次查询每次表时仅调用一次,在最开始时被调用。通过一个 SPH_RANKER_INIT 结构传递一些查询范围内的选项,包括用户选项字符串(例如,上面示例中的 "option1=1")。
XXX_update() 对于每个匹配的文档,被多次调用,每次调用都提供一个匹配关键词的出现情况,一个 SPH_RANKER_HIT 结构。每个文档内的出现情况保证按照 hit->hit_pos 值的升序传递。
XXX_finalize() 在没有更多关键词出现情况时,对每个匹配的文档调用一次,必须返回 WEIGHT() 值。这是唯一必须实现的函数。
XXX_deinit() 在每次查询结束时调用一次。
Last modified: August 28, 2025