RawWeb.org技术栈的前三个迭代

RawWeb.org技术栈的前三个迭代

💡 原文英文,约1600词,阅读约需6分钟。
📝

内容提要

RawWeb.org是一个搜索引擎项目,旨在帮助用户发现被主流搜索引擎忽视的个人数字花园。该项目使用PostgreSQL作为数据库,Redis进行缓存,Elasticsearch进行全文搜索,支持多语言内容索引。经过Django、Nest.js和Go三个版本的开发,最终选择Go作为主要技术栈,前端使用SvelteKit,基础设施采用Docker Compose和VPS。未来计划包括建立监控系统。

🎯

关键要点

  • RawWeb.org是一个搜索引擎项目,旨在帮助用户发现被主流搜索引擎忽视的个人数字花园。
  • 该项目使用PostgreSQL作为数据库,Redis进行缓存,Elasticsearch进行全文搜索,支持多语言内容索引。
  • 目前已索引17000个网站和615000篇文章,用户可以提交独立博客。
  • 使用PostgreSQL而非SQLite是因为未来可能需要Pg的丰富插件。
  • Elasticsearch用于全文搜索,选择它是因为其对中文分词的支持更好。
  • 爬虫仅从网站的RSS源获取数据,简化了实现过程。
  • 支持多语言内容索引,使用专门的分词器提高搜索结果质量。
  • 使用lingua进行语言检测,选择其高低准确率模式以提高性能。
  • 后端经历了Django、Nest.js和Go三个版本的开发,最终选择Go作为主要技术栈。
  • Django的开发体验良好,但由于其复杂性,最终决定转向Node.js。
  • Nest.js引入了过多的复杂性,导致开发负担加重,因此最终选择Go。
  • Go的基本语法和ORM问题已得到改善,使用GORM Gen提升了CRUD体验。
  • 前端使用SvelteKit,编译为混合SSG和SPA页面,推荐使用Svelte。
  • 基础设施使用Docker Compose进行服务编排,避免了供应商锁定。
  • 未来计划建立Prometheus + Grafana监控系统,以可视化搜索量和新索引量等指标。
➡️

继续阅读