问题描述
最近在用开源 Flarum 的论坛搭站点,因为这个 Flarum 是海外开源项目,所以在中文搜索上遇到了点问题。
我的环境:
折腾经历:
1、一开始通过Flarum中文社区入手,直接安装了 【Search In Title】这个插件,装完之后确实能搜到(但没装之前,没试过搜索),所以以为就简单解决了。但最近发现论坛搜索只能搜标题,不能搜帖子里的内容。(后来发现这个插件是不需要的)
2、然后继续走社区找,发现了一个【整合 xunsearch 的中文搜索插件】,但是该插件开发的比较早,插件基于 v0.1.0-beta.7 版本的 Flarum。看评论,在新版本的Flarum会有点问题,所以就没实践了。
3、然后继续找到另一种方案,通过修改mysql配置和重建索引,但是这个我也没实践,不知道行不行。
4、到这里,我大概知道是索引问题,那么Flarum已经更新到1.8.5,会不会已经解决了这个问题了呢?我就尝试把【Search In Title】关掉,再去搜索,发现也是能搜,而且内容也能搜!!!但很快又发现了新的问题,有些帖子能搜出来,有些不能搜出来,不管是标题还是内容,都有这种情况。。。蛋疼
5、然后继续找解决方案,然后找到【Flarum借助Sonic开启中文搜索】方案,Sonic是一个用Rust编写的开源搜索引擎服务器,专注于提供简单、高性能和轻量级的搜索解决方案。
最终解决了我的问题,希望对你也适用
体验地址:爱盘资源
具体操作
服务器环境:
腾讯云
系统:CentOS 7.9.2009 x86_64(Py3.7.9)
宝塔面板: 免费版 Linux正式版8.0.5
第一步:安装Docker
这里我们选用Docker来部署Sonic,便于管理项目。
宝塔面板支持一键安装并启用Docker,点击Docker这个菜单进去,如果还没安装,会弹窗给你点安装。你也可以在「软件商店」搜索「docker」,选择一个进行可视化安装。
第二步:拉取镜像
Docker安装成功后,进入Docker菜单,点击「镜像」,点击「从仓库中拉取」,在弹窗上选择仓库名 为「docker官方库」,镜像名填:「valeriansaliou/sonic:v1.4.3」,点击确认即可拉取镜像。
创建成功,弹窗关闭后,列表就会有一条记录,如上图。
第三步:配置文件
由于需要在容器中运行Sonic,所以我们需要在本机目录编写一个配置文件,然后映射到容器中中,并且将存储目录也映射过去。
在宝塔界面的菜单,点击 「网站」,进入后找到你的站点,点击根目录,进入文件管理
新建一个 「sonic」文件夹
然后点击「sonic」进入这个目录,再创建config.cfg文件 和 「store」文件夹
双击 config.cfg,拷贝以下代码到config.cfg文件,然后只需修改那行「你的自定义密码」,自己想一个密码填进去,点保存即可:
[server]
log_level = "error"
[channel]
inet = "0.0.0.0:1491"
tcp_timeout = 30
auth_password = "你的自定义密码"
[channel.search]
query_limit_default = 10
query_limit_maximum = 100
query_alternates_try = 4
suggest_limit_default = 5
suggest_limit_maximum = 20
[store]
[store.kv]
path = "/var/lib/sonic/store/kv/"
retain_word_objects = 1000
[store.kv.pool]
inactive_after = 1800
[store.kv.database]
flush_after = 900
compress = true
parallelism = 2
max_files = 100
max_compactions = 1
max_flushes = 1
write_buffer = 16384
write_ahead_log = true
[store.fst]
path = "/var/lib/sonic/store/fst/"
[store.fst.pool]
inactive_after = 300
[store.fst.graph]
consolidate_after = 180
max_size = 2048
max_words = 250000
第四步:添加并启动容器
在宝塔面板,点击「Docker」菜单(吐槽一句,腾讯云的香港服务器真的太慢了,打开这个docker菜单很慢很慢)
然后填入以下信息:
如上图所示,分别配置一下端口和挂载目录就行
添加后容器就会自动运行,如果没有错的话,你应该会看到容器已经进入已启动的状态,如下图所示:
如果并没有「已启动」,检查一下容器的日志,看看是哪里存在问题。
第五步:安装Sonic插件
在宝塔界面的菜单,点击 「网站」,进入后找到你的站点,点击根目录,进入文件管理后,点击「终端」
复制安装插件代码,粘贴进去回车安装即可
composer require ganuonglachanh/sonic
插件安装成功后,去你的论坛站点登录后台,就能看到 「Search By Sonic」(除非没安装成功),开启插件,填写你在创建config.cfg文件时所填写的密码,主要不要填写错了。
最后一步:创建索引
本质还是索引的问题。
在宝塔界面的菜单,点击 「网站」,进入后找到你的站点,点击根目录,进入文件管理后,点击「终端」
php flarum sonic:addtoindex
如上图,就代表成功 了,快去你的论坛搜索试试吧。
体验地址:爱盘资源