两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版后一修订版两侧同时换到之后的修订记录 |
php:flarum [2021/01/12 03:01] – shykana | php:flarum [2021/01/12 04:40] – shykana |
---|
这里的配置不行。您可以考虑使用 [[https://mroonga.org/|Mroonga]] 实现中文搜索。但是这里的教程暂时并不能真正实现中文搜索。 | 这里的配置不行。您可以考虑使用 [[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。 |
MariaDB 的配置文件可能会比较难找,可能会有: | MariaDB 的配置文件可能会比较难找,可能会有: |
sudo mysqlcheck -o flarumdb | sudo mysqlcheck -o flarumdb |
</code> | </code> |
这时您应该就可以在 Flarum 里中文检索了。 | 这时您应该就还是不可以在 Flarum 里正常地中文检索。 |