让你的 Flarum 支持中文检索(Meilisearch方案)
最近部署了 Flarum 的论坛,但是默认是不支持中文检索的,所有查找了一些解决方案。
本文末尾会贴上 docker-compose.yaml
内容。读者修改数据库连接参数后,可以直接使用。
运行环境
- OS Version:Ubuntu 20.04 LTS
- OS 规格:2C 2G
- Flarum Version:1.8.8
- PHP Version:8.3.13
- DB Version:MariaDB 10.5.22
- Docker Version:20.10.25
- Docker Compose Version:1.29.2
解决方案
Algolia
不需要在自己服务器部署,不用担心影响服务器的性能,只需从 Algolia 官网申请一个API ,然后在 Flarum 安装 Scout Search 扩展,启用后,填写Algolia API 即可。
Algolia 免费额度为 10000次请求/月。
Meilisearch
Github:https://github.com/meilisearch/meilisearch
MeiliSearch 是一个强大、快速、开源、易于使用和部署的轻量级搜索引擎。使用Rust 语言编写,提供了闪电般快速的全文搜索功能,并且易于使用和集成。
搜索和索引都是高度可定制的。提供开箱即用的功能,如错字容忍、过滤器和同义词。
快速开始
-
假设已经有运行的 Meilisearch 服务(如果没有的话,可以参考本文末尾的配置文件进行部署)
-
安装 Meilisearch SDK ,在 Flarum 工作目录执行命令
注意:Meilisearch 驱动程序需要一个运行中的 Meilisearch 服务器实例。 服务器可以托管在任何地方,只要能通过网络连接到。 默认情况下,扩展会尝试连接 127.0.0.1:7700 的服务器。
composer require meilisearch/meilisearch-php
-
安装 Scout Search 扩展,在 Flarum 工作目录执行命令
composer require clarkwinkelmann/flarum-ext-scout
-
在后台管理启用这个扩展,并填写 Meilisearch 连接参数
-
在 Flarum 工作目录执行命令,刷新索引
php flarum scout:import-all
TNTSearch
Github:https://github.com/teamtnt/tntsearch
TNTSearch 是一个用PHP 实现的全文索引引擎,以Laravel 扩展包的方式存在。他的优势在于不需要多余配置软件。搜索和生成索引的逻辑使用PHP,使用SQLite 来存储索引数据。
快速开始
感觉这个方案不好,没关注。
Elastic Search
Github:https://github.com/elastic/elasticsearch
ElasticSearch 是鼎鼎大名的搜索引擎,基于 Lucene 库,功能强大,除了重没有别的缺点,如果你的服务器配置高的话,建议使用这个ES方案。
快速开始
-
在 Flarum 工作目录执行命令,安装扩展
composer require blomstra/search
-
在后台管理启用这个扩展,并填写 Elasticsearch 连接参数
-
在 Flarum 工作目录执行命令,刷新索引
php flarum blomstra:search:index
部署文件
这是我的基于 Meilisearch 方案的部署文件,仅供参考。
如果使用的话,记得修改为你的数据库连接参数。
version: '3'
services:
meili:
image: getmeili/meilisearch:v1.7
restart: always
ports:
- 127:0.0.1:7700:7700
volumes:
- /data/meili-search:/meili_data
environment:
- MEILI_MASTER_KEY=paopao-meilisearch
flarum-bbs:
image: crazymax/flarum:1.8.8
ports:
- '127:0.0.1:20009:8000'
environment:
- TZ=Asia/Taipei
- DB_HOST=[YOUR_DB_HOST]
- DB_NAME=[YOUR_DB_NAME]
- DB_USER=[YOUR_DB_USER]
- DB_PASSWORD=[YOUR_DB_PASSWORD]
- FLARUM_BASE_URL=https://yoursite.com
volumes:
- /data/flarum-bbs:/data
注意:你的服务器必须已经安装了 docker 和 docker-compose 然后才可以使用 docker-compose up -d
命令运行上面的服务。
等待一段时间后,通过 docker-compose ps
命令查看服务全部已经启动完成。
通过 docker-stats
命令查看容器占用资源,在我的服务器:
- Meilisearch 占用内存约 50MB
- Flarum 占用内存约 150MB
现在通过浏览器访问 https://yoursite.com ,就可以使用 Flarum 论坛啦。
默认账户名和密码是:flarum,记得修改为你的密码。
鸣谢
Flarum 中文社区的帮助帖。