用 Meilisearch 替代 flarum 的中文搜索功能
本次教程所使用环境:
- Ubuntu 2204
- Nginx1.2 + Mysql 8 + PHP 8
- Flarum: v 1.6.2 Scout Search:0.3.2
- Meilisearch:0.29.2
教程主要分为以下步骤:
- 安装 Meilisearch 并获取 API 密钥(步骤 3-2)
- 安装 Meilisearch SDK (在Flarum 目录下进行)
- 安装 Scout Search 扩展 (在Flarum 目录下进行)
因为 Scout Search 这个扩展支持 Algolia and Meilisearch 两种,而使用 Algolia 只需填写账号和API 即可使用,而 Meilisearch 需要自己部署,所以就有此教程。
一、安装 Meilisearch 轻量级搜索引擎 (https://www.meilisearch.com/)
安装方式分为本地安装和云平台部署,详细安装方式如下
本地安装:cURL、Homebrew、Docker、APT、Source、Windows
云平台安装:AWS、Azure、DigitalOcean、GCP、Koyeb、Qovery、Railway )
本文就以源码(Source)方式安装
官方原文https://docs.meilisearch.com/learn/cookbooks/running_production.html#a-quick-introduction
1、安装 Meilisearch
1-1、更新包和其他版本
apt update
1-2、安装 curl 因为往下的步骤要用到(已安装省略这一步)
apt install curl -y
1-3、用一键脚本安装 Meilisearch 最新的版本
curl -L https://install.meilisearch.com | sh
1-4、把文件移到系统目录
mv ./meilisearch /usr/bin/
1-5、运行以下命令启动 meilisearch
meilisearch
成功会看到如下信息
2、添加 Meilisearch 到自启动服务进程 (原文 https://docs.meilisearch.com/learn/cookbooks/running_production.html#step-2-run-meilisearch-as-a-service)
如果您不熟悉服务,自行搜索
systemd了解有关 Linux 服务基础知识的更多信息
2-1、创建自启动服务文件
要在生产环境中运行 Meilisearch,请使用该 –env 标志。–master-key 使用该选项设置主密钥。当您第一次启动一个实例时,Meilisearch 会创建两个默认的 API 密钥:Default Search API Key和Default Admin API Key。使用 Default Admin API Key,您可以控制谁可以访问或创建新文档、索引或更改配置,因此别把此API Key 泄露。
2-2、创建一个随机的主密钥,
并通过以下方式更改主密钥
cat << EOF > /etc/systemd/system/meilisearch.service
在 –master-key 后面加上你的主密钥,例如 Y0urVery-S3cureAp1K3y
[Unit]
Description=Meilisearch
After=systemd-user-sessions.service
[Service]
Type=simple
ExecStart=/usr/bin/meilisearch --http-addr 127.0.0.1:7700 --env production --master-key Y0urVery-S3cureAp1K3y
[Install]
WantedBy=default.target
EOF
2-3、启用并启动服务
启用 Meilisearch 服务
systemctl enable meilisearch
开始运行 Meilisearch 服务
systemctl start meilisearch
查看 Meilisearch 服务是否已启动
systemctl status meilisearch
返回信息
● meilisearch.service - MeiliSearch
Loaded: loaded (/etc/systemd/system/meilisearch.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-04-10 14:27:49 UTC; 1min 8s ago
Main PID: 14960 (meilisearch)
3、列出 API 密钥 (原文 https://docs.meilisearch.com/learn/security/master_api_keys.html#creating-an-api-key)
3-1、把下面 MASTER_KEY
改为你的主密钥,否则会报错
curl \
-X GET 'http://localhost:7700/keys' \
-H 'Authorization: Bearer MASTER_KEY'
3-2、返回的结果,在 “name”: “Default Admin API Key”, 下面的 “key” 后面那串就是我们要的主密钥
{
"name": "Default Admin API Key",
"description": "Use it for all other than search operations. Caution! Do not expose it on a public frontend",
"key": "380689dd379232519a54d15935750cc7625620a2ea2fc06907cb40ba5b421b6f",
"uid": "20f7e4c4-612c-4dd1-b783-7934cc038213",
"actions": [
"*"
],
"indexes": [
"*"
],
"expiresAt": null,
"createdAt": "2021-08-11T10:00:00Z",
"updatedAt": "2021-08-11T10:00:00Z"
},
二、安装 Meilisearch SDK (在Flarum 目录下进行)
1-1、进入 Flarum 目录 (例如你的Flarum在 /data/ )
cd /data
1-2、安装最新的 Meilisearch SDK 版本
composer require meilisearch/meilisearch-php
composer require meilisearch/meilisearch-php:"0.23.*"
三、安装 Scout Search 扩展 (在Flarum 目录下进行)
composer require clarkwinkelmann/flarum-ext-scout
安装完成后,进入Flarum 管理后台,并启用 Scout Search 扩展
1、Driver 此处选择 Meilisearch
2、Index name prefix (optional) 此处随便填一个,可以不填。
3、Meilisearch Host 这里使用默认,不用改(除非你改了,或者7700这个端口被占用需要改)
4、Meilisearch Key 这里就填写刚才 [3-2步骤的 key]
5、保存
6、创建索引
php flarum scout:import-all
成功就会返回多少条内容已创建,否则就会红色框框提示哪个地方出错。