中文搜索对于任意程序来说,分词都是一个重大挑战,flarum 对中文搜索的官方支持目前处于to-do阶段,依据各位大佬的尝试,目前支持中文搜索的方案大体有以下几种, 1、Sonic 2、Meilisearch 3、Algolia 4、Elasticsearch

性能、部署难度、数据规模、分词能力 1、从安装使用难度如下: Algolia < Sonic < Meilisearch < Elasticsearch

2、服务器性能占用大小 Algolia < Sonic < Meilisearch < Elasticsearch

3、功能、数据规模和分词能力 Sonic < Algolia < Meilisearch < Elasticsearch

Algolia (www.algolia.com)不需要在自己服务器部署,不用担心影响服务器的性能,只需从 Algolia 官网申请一个API ,然后在 Flarum 安装一个Scout Search 扩展,启用后,填写Algolia API 即可。

Algolia 免费方案仅可使用 10,000 次/月的查询量,超出的量可以查阅官方价格  https://www.algolia.com/pricing/ ,假如你的论坛使用量不多,可以试试这个。

但这里更推荐将 flarum 的搜索页面自动跳转到公共搜索引擎(谷歌,Bing,百度)。

进入编辑:后台 > 外观 > 自定义页脚 添加 script 标签,在标签里面添加 redirect.js 文件里面的代码,保存

<script>
  // code ...
</script>

刷新页面,完毕

redirect.js 如下:

(function () {
  function redirectSearch(search) {
    const href =
      [
        "https://www.google.com/search?q=",
        "https://www.bing.com/search?q=",
        "https://www.baidu.com/s?wd=",
      ][0] +
      "site%3A" +
      location.hostname +
      "/d/" +
      "+" +
      search.replace(/.*[\?&]q=/, "");
    // window.open(href, "_blank");
    location.href = href;
  }
  const _pushState = history.pushState;
  const _replaceState = history.replaceState;
  history.pushState = function (o, a, u) {
    if (/\?q=/.test(u)) {
      return redirectSearch(u);
    }
    _pushState.call(history, o, a, u);
  };
  history.replaceState = function (o, a, u) {
    if (/\?q=/.test(u)) {
      return redirectSearch(u);
    }
    _replaceState.call(history, o, a, u);
  };
  if (/[\?&]q=/.test(location.search)) {
    redirectSearch(location.search);
  }
})();

更多请参见:  GitHub - PipecraftNet/flarum-redirect-search: Redirect flarum search pages to other search engines like google, bing, baidu. Example: https://discuss-cn.bestxtools.com/