这是我参与「第三届青训营 -后端场」笔记创作活动的第5篇笔记
本文主要是对青训营进阶班后端大项目搜索引擎项目的整体总结
项目是一个Golang实现的全文检索引擎,支持纯文本信息的搜索、输入文本搜索图片、自定义关键词过滤、搜索热词、搜索历史、结果分页等功能
项目技术栈
项目采取了多种方法来保证系统良好性能,其中包括
- 数据的分片存储来保证高吞吐
- 使用磁盘和内存缓存进行索引
- gzip做中间件压缩
- 主要技术点:倒排索引、正排索引、文件分片、高并发查询
接口设计
| 接口定义 | 接口名称 | 接口说明 |
|---|---|---|
| /query | 查询 | 接口用于基本的查询,指定数据库可以指定查询的方式(网页,图片) |
| /reminder | 搜索提示 | 根据历史记录和用户输入返回建议搜索内容 |
| /trend | 搜索热词 | 返回搜索热度最高的搜索词,数量在config中修改 |
| /pageDetail | 网页详情 | 返回网页的摘要信息,该接口主要是为了解决爬虫时设计不全面没有爬取摘要的问题,会一定影响性能,可在后期优化掉 |
| /index | 添加索引 | 添加索引 本来是考虑动态增加网页 后来没有用到 |
| /index/batch | 添加索引 | 批量增加索引,用在初始化数据库时 |
| /index/remove | 删除索引 | 根据ID删除索引 |
| /database/list | 查看数据库 | 查看目前已有的数据库 |
| /database/drop | 删除数据库 | 删除数据库和对应的所有文件 |
| /database/create | 创建数据库 | 根据数据库的名字获取或者创建数据库 |
| /word/cut | 分词 | 使用jieba分词进行分词 |