Skip to content

自定义搜索函数

优秀的小杨同学 edited this page Jun 21, 2023 · 2 revisions

自定义搜索函数

搜索是 Sonolus 服务器的一个核心功能。接下来,本页面将向您介绍如何自定义搜索函数。

配置语法

自定义搜索配置文件Search 类

配置示例

{
    "options": [
        {
            "query": "keywords",
            "name": "#KEYWORDS",
            "type": "text",
            "placeholder": "#KEYWORDS"
        }
    ]
}

请求处理

本代码默认处理所有满足 ?keywords={{keywords}} 的请求。

以处理搜索关卡为例,修改 items/LevelItem.h 中的 levelSearch() 函数。

函数定义: string levelSearch(map<string, string> $_GET) {}

其中 $_GET 为请求的 GET 参数,返回值为 SQL SELECT 函数 WHERE 后面的参数。

具体示例:

/**
 * @brief 关卡搜索请求处理函数
 * @param $_GET 请求 GET 参数
 * @return SQL 搜索过滤代码
 */
string levelSearch(map<string, string> $_GET) {
    string filter = "";
    if ($_GET["keywords"] != "") filter = "title like \"%" + str_replace("\"", "\\\"", $_GET["keywords"]) + "%\"";
    return filter;
}

部署

代码编写完毕后,退出代码编辑器,使用 手动编译 中的指令重新编译 Sonolus 服务主程序和插件即可。

Clone this wiki locally