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监控系统,以可视化搜索量和新索引量等指标。

🔎

延伸解读

技术选择的影响

RawWeb.org在技术栈的选择上经历了多次迭代,最终选择Go作为主要开发语言。这一选择不仅提高了开发效率,还简化了基础设施的管理。Go的基本语法和ORM的改进使得CRUD操作更加顺畅,适合快速迭代的项目需求。

多语言支持的重要性

该项目支持多语言内容索引,使用专门的分词器来提高搜索结果的质量。随着全球用户的增加,能够有效处理多种语言的搜索引擎将更具竞争力,尤其是在中文等语言的处理上,Elasticsearch的选择显得尤为重要。

简化爬虫实现的策略

RawWeb.org的爬虫仅从RSS源获取数据,这一策略大大简化了实现过程,降低了开发复杂性。通过这种方式,项目能够快速获取更新内容,同时避免了对网站的过度抓取,减少了潜在的法律风险。

延伸问答

RawWeb.org的主要目标是什么?

RawWeb.org旨在帮助用户发现被主流搜索引擎忽视的个人数字花园。

RawWeb.org使用了哪些技术栈?

RawWeb.org使用PostgreSQL作为数据库,Redis进行缓存,Elasticsearch进行全文搜索,前端使用SvelteKit。

为什么选择Go作为RawWeb.org的主要后端技术?

选择Go是因为其基本语法和ORM问题已得到改善,且开发体验更佳。

RawWeb.org如何处理多语言内容的索引?

RawWeb.org使用专门的分词器和语言检测技术来处理多语言内容的索引。

RawWeb.org的爬虫是如何工作的?

爬虫仅从网站的RSS源获取数据,简化了实现过程,作为HTTP请求者和RSS解析器。

未来RawWeb.org有哪些计划?

未来计划包括建立Prometheus + Grafana监控系统,以可视化搜索量和新索引量等指标。

🏷️

标签

➡️

继续阅读