你可能一直在为长毛象的搜索功能太弱而苦恼,不过这种状态在 v2.7.0 后有了很大的改观。

Mastodon v2.7.0 添加了全文搜索功能。 开启全文搜索功能之后,网站用户可以很方便的搜索到想找的嘟嘟。

下面我将以 Debian 9 系统为例,介绍如何开启长毛象全文搜索功能。

安装 Java

Elasticsearch 需要 Java 8 或者更高的版本。

你可以安装 Oracle Java 或 OpenJDK,此处将使用官方仓库中的 openjdk 8。

apt install openjdk-8-jre

安装 Elasticsearch

添加 Elasticsearch PGP Key

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

添加 APT 仓库

echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list

安装 Elasticsearch

apt update && apt install elasticsearch

配置 systemd service

systemctl enable elasticsearch.service
systemctl start elasticsearch.service

运行上述命令之后,访问 http://localhost:9200 ,确认 Elasticsearch 已经运行。

配置 Mastodon

.env.production 文件中添加以下行:

ES_ENABLED=true
ES_HOST=localhost
ES_PORT=9200

重启服务

systemctl restart mastodon-sidekiq.service mastodon-streaming.service mastodon-web.service

创建索引

su - mastodon
cd live
RAILS_ENV=production bin/rails chewy:deploy

结语

完成上述步骤之后,你可以打开管理页面确认已经开启全文搜索功能。

../../images/full-text-search-for-mastodon/admin.thumbnail.png

管理页面

现在,你可以尽情享受全文搜索的便利了。

../../images/full-text-search-for-mastodon/full-text-search.png

全文搜索

性能优化(可选)

首先 Elasticsearch 需要使用大量内存,你可以参考这个文档


但是根据 Mastodon 官方的说法,实际上不需要分配这么多内存给 Elasticsearch。

当你在低内存的 VPS 上使用 Elasticsearch 时,你必须要修改 Elasticsearch 的配置文件。

修改 /etc/elasticsearch/jvm.options 文件的这些行:

# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

-Xms1g
-Xmx1g

想知道该设置多少内存? 你可以参考下面的表格。

Memory Xms Xmx
1GB 256m 256m
2GB 512m 512m
3GB 1g 1g
4GB 2g 2g

修改配置之后,重启 Elasticsearch。

systemctl restart elasticsearch.service

安装中文插件

为了有良好的搜索体验,请安装中文搜索插件

参考资料

Note

本文以 GNU Affero General Public License v3.0 协议授权。