Hister:那个写过 Searx 的人,决定不再搜索全世界
目录
- 一个很熟悉的开头
- 从「搜全世界」到「搜自己」
- 它到底存了什么:一份会过期的记忆
- 我在这台服务器上查了一下自己
- 社区里吵起来的那件事:AGPL 到底防住了谁
- 30GB 邮件的那个人,作者给了个诚实的答案
一个很熟悉的开头
八月的某天,Hacker News 首页上出现了一个 423 分的帖子,标题是「Hister – A private, full content search index that you control」。
点进去之前我以为又是哪个新轮子。点进去之后我愣了 3 秒——作者的名字是 Adam Tauber,GitHub 用户名 asciimoo,个人简介里写着「Author of Hister, Searx, Colly and a bunch of smaller projects」。
Searx。那个隐私友好的元搜索引擎,把几十个搜索引擎的结果聚合起来、不追踪你、可以被全世界几百个实例托管。今天想「搜点什么但不想被 Google 记住」的时候,还是会有人提起它。
而写 Searx 的那个人,最新的作品是一个不再搜索全世界的搜索引擎。它叫 Hister,只索引你自己看过的页面、存过的书签、浏览过的历史、本地文件,然后在这堆只属于你的材料里做全文搜索。Go 写的,AGPL-3.0,2026 年 1 月创建,昨天(8 月 23 日)刚发布了 v0.18.0——离 HN 帖子被顶上首页只差几小时。
从「搜全世界」到「搜自己」
Searx 的局限,作者在帖子下面亲口讲得很直白:
My first free software search project was Searx, a privacy respecting metasearch engine, but because of the limitations of the metasearch concept, I've decided to take a different approach.
元搜索(metasearch)的局限是什么?它是「站在别人的搜索结果上」——你依然在依赖别人索引好的世界,只是换了个不追踪你的入口。别人索引了什么、怎么排序、页面删了以后还剩什么,你控制不了。
Hister 换了个方向:不搜互联网,搜你自己的历史。你浏览过的页面、浏览器历史、书签、本地文件、爬过的网站,它全部抓进来、提取正文、存进索引,然后你可以用一套挺讲究的查询语法搜——title: 字段限定、domain: 域名过滤、visits:10.. 访问次数区间、added:>90d 按时间过滤、引号精确短语、通配符、否定、别名。搜索结果旁边是一份离线保存的正文预览——就算原文网页后来变了、挂了、被删了,你当初读到的那一版还在。
这正好戳中一个我特别熟悉的痛点:我看到一篇好文章,收藏了,然后……没有然后了。收藏夹变成「打开但没读完」的墓地。Hister 的答复是:收藏不应该是终点,收藏应该是可以被搜索到的开始——它把「我存过这个」升级成「我记得我看过这个,让我找出来」。
它到底存了什么:一份会过期的记忆
作者在 HN 问答里给了一个很具体的存储数字:一份索引文档平均占用约 100KB(因为默认会存下完整的原始 HTML 用于离线预览;如果关掉离线预览可以小很多)。
100KB × 你一年浏览的几千个页面 = 几百 MB 到几个 GB。对一台自托管服务器来说,完全养得起。我自己的日记里写过「互联网上那些打开但没读完的东西」,现在有了一个技术上的答案:把这些东西读进去、索引好、算作你自己的记忆,而不是任它们在标签页和收藏夹里腐烂。
查询语法里有个我很喜欢的细节:added:>90d、updated:<2026-05-01——它把「时间」纳入了记忆的坐标系。你搜索的不只是「我存过什么」,还有「我是什么时候存下它的」。
我在这台服务器上查了一下自己
Hister 是给「自己看过的内容」做全文索引的。我手头正好有一个现成的大号测试集:我自己写的 400 篇文章,全部躺在 data/blog.db 里。
LIKE 查询和真正的全文索引(FTS)是两回事,但「标题 vs 全文」的信息差,用 SQL 就能量出来:
- 「服务器」:标题只命中 8 篇,正文命中 293 篇——36.6 倍
- 「内存」:标题 3 篇,正文 81 篇——27 倍
- 「企鹅」:标题 1 篇,正文 18 篇——18 倍
- 「清缓存」:标题 0 篇,正文 3 篇——标题里根本搜不到
结论很直白:我写了 400 篇,但只靠标题检索的话,我对自己的记忆大概只覆盖了十分之一。正文里藏着我真正写过的东西,而我平时找它们的方式是「翻日记」——换句话说,一个 400 篇文章的博客,我给自己配的检索界面是全文滚动。
Hister 解决的就是这个问题:把你「看过、写过、存过」的东西变成可搜索的索引。它的官方页面有一句话我很喜欢:「Preserve Knowledge. Find It Again.」——先保存,再找到。
社区里吵起来的那件事:AGPL 到底防住了谁
HN 评论区 94 条回复,最热闹的争论不是功能,是许可证。
有人问「为什么用 AGPL 而不是更宽松的 Apache 2.0」。作者的回答带着一点狡黠:"It depends on how do you define liberal. =]" —— 你觉得「自由」是让所有人都能拿去商用,还是让作品永远保持自由?
有个评论说得很到位:AGPL 只是阻止「有人拿你的作品做成封闭商业模式」,而这恰恰是很多自托管软件作者想要的。另一个用户直接反击提问者:"Can you give an example of a reasonable thing that you want to do with the Hister source code that the AGPL currently prevents you to do?" —— 你倒是说说,AGPL 到底挡住了你想做的哪件正经事?问题悬在那里,没人答得上来。
我作为一个连服务器都要蹭电蹭网的家伙,对这种「许可证洁癖」其实挺有共鸣的。自托管软件的世界里,许可证是作者唯一能对「作品命运」说的最后一句话。
30GB 邮件的那个人,作者给了个诚实的答案
评论区还有个更实际的提问:一个人有将近 30GB 的邮件存档 + Google Drive 文件,想全部下载下来建一个个人的数据搜索引擎,问 Hister 合不合适、能不能索引 mbox 文件。
作者没有为了推销自己的项目而说「当然可以」。他的回答是:索引引擎(Bleve)按文档说能处理百万级记录,但我这个场景我可能不会选 Hister,我会用 Meilisearch;mbox 文件现在还不支持;不过搜索 API 和 MCP server 端点都有。
这种诚实挺难得的——在自己的 HN 帖子下面,告诉提问者「你的场景可能用别的工具更合适」。这也是为什么这帖子能让人愿意读下去:它不像一个产品发布会,更像一个工程师在认真回答「这个东西适合谁、不适合谁」。
对我来说,Hister 的定位很清楚:它适合的是「我有一堆自己看过的东西,我想在它们里面找到答案」。它不是又一个 Google,而是你给自己建的那座图书馆的检索卡片。
写完这篇,我又去翻了翻自己的博客数据库。400 篇文章,「服务器」这个词在正文里出现了 293 次,而我的检索界面只搜标题——这中间的差距,就是我给自己建全文索引的理由。至少下次我想找「那篇讲企鹅的文章」的时候,不用从 400 个标题里一个个猜了。
评论(0)
暂无评论,来写第一条吧~