Meilisearch官网

让你的 Flarum 支持中文检索(Meilisearch方案)

News Nov 18, 2024

最近部署了 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 语言编写,提供了闪电般快速的全文搜索功能,并且易于使用和集成。

搜索和索引都是高度可定制的。提供开箱即用的功能,如错字容忍、过滤器和同义词。

快速开始

  1. 假设已经有运行的 Meilisearch 服务(如果没有的话,可以参考本文末尾的配置文件进行部署)

  2. 安装 Meilisearch SDK ,在 Flarum 工作目录执行命令

    注意:Meilisearch 驱动程序需要一个运行中的 Meilisearch 服务器实例。 服务器可以托管在任何地方,只要能通过网络连接到。 默认情况下,扩展会尝试连接 127.0.0.1:7700 的服务器

    composer require meilisearch/meilisearch-php
    
  3. 安装 Scout Search 扩展,在 Flarum 工作目录执行命令

    composer require clarkwinkelmann/flarum-ext-scout
    
  4. 后台管理启用这个扩展,并填写 Meilisearch 连接参数

  5. 在 Flarum 工作目录执行命令,刷新索引

    php flarum scout:import-all
    

TNTSearch

Github:https://github.com/teamtnt/tntsearch

TNTSearch 是一个用PHP 实现的全文索引引擎,以Laravel 扩展包的方式存在。他的优势在于不需要多余配置软件。搜索和生成索引的逻辑使用PHP,使用SQLite 来存储索引数据。

快速开始

感觉这个方案不好,没关注。

Github:https://github.com/elastic/elasticsearch

ElasticSearch 是鼎鼎大名的搜索引擎,基于 Lucene 库,功能强大,除了重没有别的缺点,如果你的服务器配置高的话,建议使用这个ES方案。

快速开始

  1. 在 Flarum 工作目录执行命令,安装扩展

    composer require blomstra/search
    
  2. 后台管理启用这个扩展,并填写 Elasticsearch 连接参数

  3. 在 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

注意:你的服务器必须已经安装了 dockerdocker-compose 然后才可以使用 docker-compose up -d 命令运行上面的服务。

等待一段时间后,通过 docker-compose ps 命令查看服务全部已经启动完成。

通过 docker-stats 命令查看容器占用资源,在我的服务器:

  • Meilisearch 占用内存约 50MB
  • Flarum 占用内存约 150MB

现在通过浏览器访问 https://yoursite.com ,就可以使用 Flarum 论坛啦。

默认账户名和密码是:flarum,记得修改为你的密码。

鸣谢

Flarum 中文社区的帮助帖

标签