后一修订版 | 前一修订版上一修订版两侧同时换到之后的修订记录 |
php:flarum [2021/01/11 14:32] – 创建 shykana | php:flarum [2021/01/12 06:35] – shykana |
---|
Flarum 是一个基于 PHP 的论坛软件。因为是基于 PHP ,所以它对搭建环境的要求比较低。而与其它的基于 PHP 的论坛相比,它的一个优点是比较好看。 | Flarum 是一个基于 PHP 的论坛软件。因为是基于 PHP ,所以它对搭建环境的要求比较低。而与其它的基于 PHP 的论坛相比,它的一个优点是比较好看。 |
| |
{{ :php:flarum:flarum-mobile-view.png?nolink&400 |Flarum的移动端界面}} | {{ :php:flarum:flarum-mobile-view.png?nolink |Flarum的移动端界面}} |
| |
另外一个优点是它的插件系统极其丰富,站长可以通过现有的插件很方便地定制自己论坛的功能。 | 另外一个优点是它的插件系统极其丰富,站长可以通过现有的插件很方便地定制自己论坛的功能。 |
| |
在 Flarum 的网页安装界面上: | 在 Flarum 的网页安装界面上: |
{{ :php:flarum:flarum-webins.png?nolink&400 |Flarum 网页版安装界面}} | {{ :php:flarum:flarum-webins.png?nolink |Flarum 网页版安装界面}} |
^ 栏位 ^ 您应填写的 ^ | ^ 栏位 ^ 您应填写的 ^ |
| Forum Title | 您的网站标题 | | | Forum Title | 您的网站标题 | |
点击 ''Install Flarum'' 稍加等待后即可看到 Flarum 的界面。 | 点击 ''Install Flarum'' 稍加等待后即可看到 Flarum 的界面。 |
{{ :php:flarum:flarum-interface.png?nolink&400 | Flarum 界面}} | {{ :php:flarum:flarum-interface.png?nolink&400 | Flarum 界面}} |
| |
| ===== 配置 ===== |
| ==== 中文全文搜索 ==== |
| |
| 这里的配置不行。您可以考虑使用 [[https://mroonga.org/|Mroonga]] 实现中文搜索。但是这里的教程暂时并不能真正实现中文搜索。 |
| |
| === 可以期待的配置 === |
| |
| 请见 [[https://github.com/jjandxa/flarum-ext-chinese-search/|jjandxa/flarum-ext-chinese-search]] ,但现在似乎没有支持 beta.15。 |
| |
| === 勉强可以用的配置 === |
| |
| 这个方法不适用于比较大的站点,因为比较耗资源。教程编写时 Flarum 版本为 beta.15 。 |
| |
| 直接更改代码:进入 Flarum 安装目录 ''/var/www/flarum'',编辑 ''vendor/flarum/core/src/Discussion/Search/Gambit/FulltextGambit.php'' 文件: |
| 找到含有这些东西的部分: |
| <code> |
| $subquery = Post::whereVisibleTo($search->getActor()) |
| ->select('posts.discussion_id') |
| ->selectRaw('SUM(MATCH('.$grammar->wrap('posts.content').') AGAINST (?)) as score', [$bit]) |
| ->selectRaw('SUBSTRING_INDEX(GROUP_CONCAT('.$grammar->wrap('posts.id').' ORDER BY MATCH('.$grammar->wrap('posts.content').') AGAINST (?) DESC, '.$grammar->wrap('posts.number').'), \',\', 1) as most_relevant_post_id', [$bit]) |
| ->where('posts.type', 'comment') |
| ->whereRaw('MATCH('.$grammar->wrap('posts.content').') AGAINST (? IN BOOLEAN MODE)', [$bit]) |
| ->groupBy('posts.discussion_id'); |
| </code> |
| (您可以使用一些关键词来搜索代码,加快寻找速度。)看到 ''whereRaw'' 的一行吗?在这一行前加上 <code>//</code> ,并新建一行加上 <code>->where('content', 'LIKE', '%'.$bit.'%')</code>,修改完后: |
| <code> |
| $subquery = Post::whereVisibleTo($search->getActor()) |
| ->select('posts.discussion_id') |
| ->selectRaw('SUM(MATCH('.$grammar->wrap('posts.content').') AGAINST (?)) as score', [$bit]) |
| ->selectRaw('SUBSTRING_INDEX(GROUP_CONCAT('.$grammar->wrap('posts.id').' ORDER BY MATCH('.$grammar->wrap('posts.content').') AGAINST (?) DESC, '.$grammar->wrap('posts.number').'), \',\', 1) as most_relevant_post_id', [$bit]) |
| ->where('posts.type', 'comment') |
| //->whereRaw('MATCH('.$grammar->wrap('posts.content').') AGAINST (? IN BOOLEAN MODE)', [$bit]) |
| ->where('content', 'LIKE', '%'.$bit.'%') |
| ->groupBy('posts.discussion_id'); |
| </code> |
| 这个时候保存退出应该就可以进行中文搜索了。但是对于文本内容较多的站点,这种搜索可能比较慢。 |
| |
| === 完全用不了的配置 === |
| |
| **(请不要用这里下方的配置,因为完全没有用。)** |
| 我们这里假定您用的是 MariaDB。 |
| MariaDB 的配置文件可能会比较难找,可能会有: |
| <code> |
| /etc/my.cnf.d/server.cnf |
| /etc/mysql/mariadb.conf.d/50-server.cnf |
| </code> |
| 一般来说,请善用 ''Tab'' 自动补全功能,输入 ''ls /etc/my'' 之后双击 ''Tab'' 键,然后可以慢慢跟随提示找到类似上述的含有 ''server.cnf'' 字样的配置文件。或者您也可以根据自己的 Linux 发行版类型以及 MariaDB 安装来源上网自行查找。 |
| |
| 请在 MariaDB 的配置文件中,找到: |
| <code> |
| [mysqld] |
| </code> |
| 这一部分。在这一部分添加一行 ''innodb_ft_min_token_size = 1'',变成这样子: |
| <code> |
| [mysqld] |
| innodb_ft_min_token_size = 1 |
| </code> |
| 保存退出。 |
| |
| 在终端使用如下命令建立中文检索:(这里的 ''flarumdb'' 请对应您的数据库名称) |
| <code> |
| sudo mysqlcheck -o flarumdb |
| </code> |
| 这时您应该就还是不可以在 Flarum 里正常地中文检索。 |