Flarum实现的中文搜索?
展开阅读全文

直接修改的源代码。

本修改方案适用于 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 文件 把第 30 行修改为:

'Flarum\Core\Search\Discussion\Fulltext\MySqlFulltextLikeModeDriver'

也就是把搜索的方案改成上面新建的类。