






















使用Miniflux作为RSS订阅服务已有一段日子,积累了不少条目,大概有六万多。它的搜索能力很弱,尤其是对中文,几乎达不到可用的的状态。查阅得知其全文搜索依赖 PostgreSQL 的内置全文搜索(to_tsvector + to_tsquery),默认配置对中文(CJK)非常不友好,因为它基本上按字符切分(或几乎不切分),导致搜索“人工智能”可能搜不到“人工智”或“智能”相关的结果,主要问题是缺少中文分词。
我希望达到的效果:
尝试通过编译 zhparser 数据库插件替换原来的分词器,效果确实显著提高,而且还能通过多关键词组合查询,不过仍有一个痛点让我苦恼,那就是搜索结果中无法查看摘要内容。例如查询”意义“,可能会得到将近一百个结果,因为不能快速地查看条目内容是否符合需求,只能手动点击依次查看,故效率不高。

想着用Meilisearch + GOlang 搭建一个独立的搜索系统,但是因为服务器linux系统比较老旧,不支持新版的Meilisearch运行,最后使用开源的索引库Bleve来构建,算是比较完美地解决问题。
Miniflux (PostgreSQL) ──触发器──▶ 同步队列 ──▶ Go 服务 ──▶ Bleve (嵌入式)
↑
REST API 搜索接口
架构图

参考:
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。