Flarum论坛中文搜索解决方案 无需插件版

Flarum论坛程序默认的搜索功能不好用,原因是默认中文的分词是按英文空格。也试过其他实现方案,比如Elasticsearch、Meilisearch、sonic、Algolia这些搜索插件。但是综合中文搜索效果、成本、配置复杂程度等方面,目前这种无插件版是效果最好的。需要修改的只有mysql数据库的分词参数。

环境信息

  • aapanel面板部署;
  • mysql版本5.7;

需要注意的是:MySQL自 5.7开始支持中文、日文的全文索引,如果数据库版本较低,此方法可能不行。

修改mysql数据库配置

aapanel面板上直接修改,增加一行,然后点击保存:

ngram_token_size=2

Flarum论坛中文搜索解决方案 无需插件版-修改mysql数据库配置

重建数据库索引

修改完mysql数据库配置之后,还需要重建一下mysql帖子表(discussions)和回复表(posts)的索引。

-- posts表的content字段

mysql> use your_database_name;
Database changed
mysql> ALTER TABLE posts DROP INDEX content;
Query OK, 0 rows affected (0.10 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> CREATE FULLTEXT INDEX content ON `posts` (`content`) WITH PARSER ngram;
Query OK, 0 rows affected (51.15 sec)
Records: 0  Duplicates: 0  Warnings: 0


-- discussions表的title字段

mysql> use your_database_name;
Database changed
mysql> ALTER TABLE discussions DROP INDEX title;
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> CREATE FULLTEXT INDEX title ON `discussions` (`title`) WITH PARSER ngram;
Query OK, 0 rows affected (6.27 sec)
Records: 0  Duplicates: 0  Warnings: 0

注意:上面的your_database_name修改为自己数据库表名称;posts表和discussions根据自己情况修改;

重建索引之后就可以试下效果了。

 

参考文章:

© 版权声明
THE END
喜欢就支持一下吧
点赞3 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容