Flarum はもともと中国語にあまり対応しておらず、バージョンアップに伴って、徐々に中国語への最適化も始まりました。たとえば、中国語のユーザー名での登録に対応したことは、確かにとても便利です。しかし、最新の beta11 でも、依然として中国語の検索には対応していません。幸い、MySQL は 5.7 以降、中国語や日本語の全文インデックスに対応しています。

また、Flarum の開発者も、将来のバージョンでは Elasticsearch の分散型全文検索エンジンを使用すると述べていました。Elasticsearch のほうがこの方法より優れているためですが、現在に至るまでまだ採用されていません。なお、この方法はデータベースのパフォーマンスにある程度影響を与えることに注意してください。

方法

mysql.cnf を編集し、以下を追加します:

[mysqld]
ngram_token_size=2

変更後、FULLTEXT インデックスを再構築する必要があります:

ALTER TABLE flarum_posts DROP INDEX content;
CREATE FULLTEXT INDEX content ON `flarum_posts` (`content`) WITH PARSER ngram;

ALTER TABLE flarum_discussions DROP INDEX title;
CREATE FULLTEXT INDEX title ON `flarum_discussions` (`title`) WITH PARSER ngram;

再構築が完了したら、Flarum の管理画面でキャッシュをクリアします。これで中国語のコンテンツを検索できるようになり、記事のタイトルと記事本文に対応します。

中国語コンテンツの検索