RDS+opensearch 实现discuz的论坛搜索插件

上一回讲到了基于RDS+opensearch 的wordpress搜索插件,今天讲一讲基于RDS和opensearch配合使用来替换discuz底层的数据库搜索。

前提:
  1. 使用RDS的mysql数据库,并且区域和opensearch所在的区域一致。
  2. 开通了opensearch的服务。
  3. 测试的的discuz版本3.2 UTF8/GBK。

第一步:创建应用
  1. 创建流程和wordpress的基本一致,下载 discuz_structure.zip (1 K) 下载次数:1 模板文件,并解压缩。
  2. 创建一个模板,选择上传这个模板文件,下一步到完成,模板创建成功。
  3. 创建一个应用,应用名例如discuz,然后选择模板,选择你刚刚创建好的模板,下一步一致到完成。

第二步:配置数据源:
  1. 点击刚刚创建好的应用,点击数据源,然后点击修改数据源。
  2. 会展示3个表,然后选择第一个表forum_thread,点击数据来源,选择rds,点击添加数据。会展示需要的基本配置,输入你的实例ID,数据库名,数据表名(这个为默认为forum_thread,如果你的表有前缀就加上前缀),过滤条件(hidden=0,更多的过滤条件可以行定义),连接数据库的用户名、密码,然后勾选数据自动同步和同意协议,点连接数据。如果是新版的discuz,所有的字段会默认给匹配上,如下:
    RDS+opensearch 实现discuz的论坛搜索插件_第1张图片
  3. 点击保存,第一个表就算配完了,为了保险起见(登录过期导致数据没有保存)最好再点击保存,然后在点击修改数据源配置第二个表的信息。
  4. 第二个表forum_post 表,填写你的实例ID,数据库名,数据库表名(默认为forum_post 如果表有前缀加上前缀,类似pre_forum_post),过滤条件为first=1(表示主贴),数据库的用户名和密码,然后勾选自动同步和统一协议,点击“连接数据”。默认的库表应该所有的字段都能匹配上,如下图:
    RDS+opensearch 实现discuz的论坛搜索插件_第2张图片
  5. 配置第三个表forum_forum,然后选择rds,点击“添加数据”,同上,区别的地方为表名,默认为forum_forum,如果有前缀的话加上前缀,过滤条件为空。配置好了 点击“连接数据”,在展示中有2个字段,fid和name能默认匹配上,然后点击添加数据,选择fid_name,源字段名称随便选择一个,然后点击内容转换的+,选择第三个插件StringCatenateExtractor, 中的字段列表为"fid,name",字段连接符为"_",点击保存,点击保存,点击保存如下:
    RDS+opensearch 实现discuz的论坛搜索插件_第3张图片
    RDS+opensearch 实现discuz的论坛搜索插件_第4张图片
  6. 保存完了数据源就配置好了,然后点击左侧的搜索结果摘要,点击添加,增加subject 和message两个字段,message 的长度为250(用户自定义,为展示summary的长度),点击保存。
    RDS+opensearch 实现discuz的论坛搜索插件_第5张图片

第三步:激活应用
  1. 在应用列表中找到这个应用,点击右侧的"激活",选择合适的档位,存储容量<=0.2g免费,qps<=5 免费。点击激活。

第四步:索引重建
  1. 点击您的应用,然后点击左侧的“索引重建”,然后点击“手动索引重建”,然后点击“导入数据并重建索引”,选择所有表,然后点击创建。
    RDS+opensearch 实现discuz的论坛搜索插件_第6张图片
  2. 这个时候opensearch控制台的操作完毕,等索引重建完毕的话您的rds数据源的数据会被导入到opensearch里边,并且新增的数据也会实时的进入opensearch。

第五步:配置discuz插件
  1. 注意:最好在您的测试的论坛中测试此功能,因为有可能您的操作导致线上的搜索服务不可用。待测试环境测试完毕,再操作线上的服务。另外如果您需要对搜索的样式或者别的内容改动,则可以在测试环境中改好,然后打包到线上。
  2. 根据不同的的编码下载不同的插件,UTF编码的请下载: cloudopensearch-utf8.zip (30 K) 下载次数:0 ,GBK编码的请下载: cloudopensearch-gbk.zip (30 K) 下载次数:1 ,下载完毕解压缩,变成了cloudopensearch 的目录。
  3. 复制cloudopensearch目录到discuz主目录下边的/source/plugin/下。
  4. 管理账号登录到discuz管理控制台,然后点击应用,在最下边未安装的插件会有阿里开放搜索的插件如下

  5. 点击“安装”,成功之后,点击“启用”,然后点解开放搜索插件的“设置”如下:

  6. 填写您的阿里云的Access Key Id、secret、host和每页显示条数,accessKeyId和secret 通过登录opensearch控制台,在右上角“ACCESSKEY管理”点击可以获取,host你可以点击你的应用,在基本信息中有API域名。Debug 为调试所用,在打开之后,会在搜索结果的源代码中增加debug信息(<!-- debug 信息 -->)。
  7. 如果确认opensearch中已经有了您导入的所有数据,则可以点击提交,否则最好等opensearch索引重建完毕以后再点击提交。
  8. 提交以后默认搜索会被替换成opensearch的搜索,搜索结果类似如下:
    RDS+opensearch 实现discuz的论坛搜索插件_第7张图片
  9. 您可以对搜索结果样式、内容进行变更,代码位与:discuz主目录/source/plugin/cloudopensearch下。
  10. 另外您对搜索结果的排序和权重有自己的看法,例如我想对日期的权重增加,但又不是按照日期排序,完全可以在控制台增加表达式来修改任何字段的RANK。

更多的功能待大家自己挖掘吧,另外badcase肯定是有的,有任何使用的问题可随时在qq群、旺旺群、论坛中反馈。

你可能感兴趣的:(RDS+opensearch 实现discuz的论坛搜索插件)