直接修改的源代码。
本修改方案适用于 beta3 和 beta4。
在 /vendor/flarum/core/src/Core/Search/Discussion/Fulltext
文件夹新建文件 MySqlFulltextLikeModeDriver.php
内容为
<?php
/*
* 添加 Flarum 对中文搜索的支持
*
* Flarum 的搜索默认使用了 MySQL 的全文检索。
* 但是 MySQL 的全文检索功能默认不支持中文。
* 本方案把 Flarum 的搜索改成了基于 LIKE 语句的 SQL 搜索。
*
* @author justjavac <justjavac@gmail.com>
*/
namespace Flarum\Core\Search\Discussion\Fulltext;
use Flarum\Core\Post;
class MySqlFulltextLikeModeDriver implements DriverInterface
{
/**
* {@inheritdoc}
*/
public function match($string)
{
$discussionIds = Post::where('type', 'comment')
->where('content', 'like', '%'.$string.'%')
->lists('discussion_id', 'id');
$relevantPostIds = [];
foreach ($discussionIds as $postId => $discussionId) {
$relevantPostIds[$discussionId][] = $postId;
}
return $relevantPostIds;
}
}
修改 /vendor/flarum/core/src/Core/Search/SearchServiceProvider.php
文件
把第 29 行修改为:
'Flarum\Core\Search\Discussion\Fulltext\MySqlFulltextLikeModeDriver'
也就是把搜索的方案改成上面新建的类。