• 教程Flarum
  • 用 Meilisearch 替代 flarum 的中文搜索功能 #79

用 Meilisearch 替代 flarum 的中文搜索功能

本次教程所使用环境:

  • Ubuntu 2204
  • Nginx1.2 + Mysql 8 + PHP 8
  • Flarum: v 1.6.2 Scout Search:0.3.2
  • Meilisearch:0.29.2

教程主要分为以下步骤:

  1. 安装 Meilisearch 并获取 API 密钥(步骤 3-2)
  2. 安装 Meilisearch SDK (在Flarum 目录下进行)
  3. 安装 Scout Search 扩展 (在Flarum 目录下进行)

因为 Scout Search 这个扩展支持 Algolia and Meilisearch 两种,而使用 Algolia 只需填写账号和API 即可使用,而 Meilisearch 需要自己部署,所以就有此教程。

[2023-06-03]更新在1panel面板docker安装meilisearch 链接:https://forum.gitzaai.com/d/104

一、安装 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
  • 如果需要指定版本,参考如下 0.23 就是版本号
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

成功就会返回多少条内容已创建,否则就会红色框框提示哪个地方出错。

  • Feb 24 2021
  • 129
  • 237
  • 0
2 年 后

草原放风筝少年 你指的是在宝塔安装meilisearch还是什么?我很少用宝塔,建议你在flarum中文群向群友求助。

  • Feb 24 2021
  • 129
  • 237
  • 0