1作者: dapoyo8 个月前原帖
你好!我做了一个名为 Indieseas.net 的项目,纯粹是出于乐趣。 我之所以制作这个项目,是因为我不喜欢搜索引擎完全忽视小型网站,而优先显示广告和商业网站。 因此,我决定自己制作一个搜索引擎!但我该如何将商业网站排除在外呢?解决方案是使用 88x31 的按钮。这些是以前用来连接网站的图片或 GIF,这在当时的搜索引擎表现还不算太差的时候非常有用。 幸运的是,如今人们仍然经常使用这些按钮! 于是,我用 Typescript 和 Bun 编写了一个程序,利用 Cloudflare Workers 抓取网页,然后提取链接、文本、元标签(标题和描述)以及图片,之后我处理这些图片以验证它们是否确实是 88x31 的按钮。 不过,这种设置(多个 Bun Worker)非常卡顿,并消耗了大量资源,因此我自然决定用……RUST 重写它! 别误会,这比我预想的要难得多,但最终我还是得到了一个相当不错的结果。 接下来是索引。这可能是所有步骤中最简单的部分,因为我将其直接集成到抓取器中,我所做的只是“docker build”,并使用 model2vec/potion-base-32M 编写了一个迷你嵌入 API。然后我启动了同一个 Docker 容器的实例,结果就是,我得到了一个相当快速的嵌入 API。 最后一步是查询,我在 Astro 前端直接制作了一个 API。这是一个简单的 SQL 查询,但效果非常糟糕。我得去修复它!不过,“发现网站”和“按钮画廊”这两个功能受到了同事和朋友们的热烈欢迎。 就这些!感谢你来参加我的迷你 TED 演讲。