200字
Halo功能扩展——Meilisearch插件提升网站的搜索体验
2026-01-07
2026-01-07

前言

自 2.0 版本起,Halo 正式迈入“全文搜索”时代。虽然内置的 Lucene 引擎能够应对基础检索需求,但在面对海量内容或对搜索交互有极高要求的场景时,其响应延迟与相关性排序往往略显吃力。

为了追求极致的搜索体验,引入独立的搜索引擎成为最优解。本文将聚焦于 Meilisearch —— 一款为快而生的开源搜索引擎,手把手教你如何将其整合进 Halo,实现毫秒级的即时搜索与更智能的检索反馈,让你的博客检索体验实现质的飞跃。

搭建 Meilisearch 服务

部署 Meilisearch 服务通常有两种方式:你可以选择自行在服务器上托管,或者使用 Meilisearch 官方提供的云服务。

云服务

访问 Meilisearch | Cloud 注册账号,根据引导创建项目。创建完成后,可以在控制台获取实例地址和 Master Key。

需要特别注意 Meilisearch 云服务的计费方式。

自托管

下面介绍两种常见的部署方式:

使用 Docker Compose 独立编排部署

这种方式适合多个项目需要同时使用一个 Meilisearch 服务的场景。 部署完成后,你可以配置域名和反向代理来暴露服务到公网。

services:
  meilisearch:
  image: getmeili/meilisearch:v1.15
  restart: unless-stopped
  ports:
    - "7700:7700"
  environment:
    - MEILI_ENV=production
    - MEILI_MASTER_KEY=<your-super-secret-master-key-here>
  volumes:
    - meilisearch_data:/meili_data

volumes:
  meilisearch_data:
    driver: local

与 Halo 的 Compose 编排一起部署

结合 使用 Docker Compose 部署 Halo 的示例,将 Meilisearch 服务添加到 docker-compose.yml 文件中。

通过这种方式部署之后,插件设置中的 Meilisearch 服务地址 应该是 http://meilisearch:7700(即服务在同一 Compose 网络下可通过服务名访问)

meilisearch:
  image: getmeili/meilisearch:v1.15
  restart: on-failure:3
  networks:
    - halo_network
  volumes:
    - ./meilisearch-data:/meili_data
  environment:
    - MEILI_ENV=production
    - MEILI_MASTER_KEY=<your-super-secret-master-key-here>
点击查看完整示例

详细的部署方式可以参考 Meilisearch 官方文档:https://www.meilisearch.com/docs/learn/self_hosted/install_meilisearch_locally

安装插件

之前 Halo 社区中已经有人开发了 Meilisearch 插件,但已经不再维护,因此这里我们选择使用 Halo 官方提供的插件。

  1. 下载插件,目前提供以下两种下载方式:

  2. 安装插件,插件安装和更新方式可参考:https://docs.halo.run/user-guide/plugins

配置插件

  1. 进入插件设置,配置 Meilisearch 服务地址Master Key索引名称 可以选择使用默认的 halo 或者自定义(如果你的 Meilisearch 服务会被多个项目使用,建议自定义索引名称)。

  2. 进入插件扩展配置,在 扩展点定义 中选择 搜索引擎,然后选择使用 Meilisearch。

数据概览

配置完插件后,我们可以进入插件的 数据概览 页面,查看 Meilisearch 的索引数据。

在这个页面中,你还可以重建索引或测试搜索功能。

对比

Lucene(默认搜索引擎)与 Meilisearch 的实际对比:

Meilisearch

Lucene(默认)

通过实际使用可以发现,Meilisearch 的搜索结果更加准确,搜索速度更快,并且支持更灵活的搜索语法,无需用户掌握复杂的搜索表达式即可获得理想的搜索结果。

注意

  1. 如果配置完 Meilisearch 插件之后无法搜索,可以尝试重建一次索引。

  2. 安装 Meilisearch 插件之后仍然需要搜索组件插件,Meilisearch 插件仅仅是提供服务,不会提供 UI。

评论