点击空白处退出提示
作品详情
概要
1616ai是一个整合全网人工智能接口的搜索引擎,通过收集整合大量其他AI平台的开放能力,对其进行归纳分类,便于开发者快速搜索,快速对比不同平台相似的开放能力,以选取最优的进行使用。
平台提供了效果对比(如图像类),价格对比等功能,还收录了该开放能力的官网,文档,试用链接等,方便开发者快速查找定位。
阅读前请先看图,对该项目有一个大概的了解,后面可能会提到一些名词:图一为主页,搜索框用于搜索,图二为搜索结果,每一个搜索结果都是一个 AI 产品(支持点赞、收藏),图三为产品详情页,展示效果图、价格、可评论
该项目后端为本人一人独立完成
模块
搜索模块(主要)
单点登录模块
用户模块
站内消息模块
SEO 优化(nodejs 和 nginx)
主要技术栈
springboot mybatis mysql redis elasticsearch logstash nginx rabbitmq shiro
nodejs vue
主要技术点
1. 搜索模块
使用 Elasticsearch 实现搜索能力,支持中文分词(ik)、拼音、自动补全提示功能。
支持结合标签搜索(过滤特定搜索条件)
搜索结果根据相关度评分排序
数据基于 mysql 进行存储及更新,通过 logstash 定时任务 sql 读取数据库数据,过滤后输出到 es 中,保证数据实时更新
支持查看搜索历史记录,支持搜索结果收藏
2. 单点登录模块
该网站除了搜索功能外,还做了论坛功能(另一个项目 bbs.1616ai.com),其中就支持了单点登录,使用 shiro + jwt 进行实现
支持用户名密码及手机号登录、微信扫码登录,一步自动注册等功能
登录成功后,发放 jwt 令牌存储至浏览器中,访问接口时,使用 Authorization 携带令牌头,后端进行验证并获得用户信息
3. 用户模块
支持用户基本信息修改(密码、昵称、头像等信息)
开发了成就系统(任务)功能,如:进行一次收藏等,即可触发成就系统更新。用户进行每一次操作,都有可能被成就系统记录,
具体实现使用 rabbitmq 异步发送操作数据,累积成就进度,完成成就后,用户还会收到站内消息提示
其他论坛相关功能在另一个项目中描述
4. 站内消息模块
用户操作可能触发站内消息提示,如成就完成,评论被回复、点赞、收藏等,在消息触发点使用 rabbitmq 发送异步消息到用户消息仓库(mysql),
前端网站定期到服务端检查并拉取消息
消息进行了分类,如系统消息、成就消息、用户消息等
在消息界面,支持点击消息进行跳转、删除消息等操作
5. SEO 优化
为了被搜索引擎收录,对 SEO 进行优化,java 端依旧保持了 restapi 风格,加入了 nodejs 作为前端服务器中转,用户打开产品页面时,
会被 nginx 转发到 nodejs 服务器,nodejs 访问 javaapi 加载文档,最后返回到前端的就是一个完整内容的文档(去除了浏览器到 java 端的直接 xhr 请求)
页面静态化,请求地址重写为 {产品 ID}.html 的形式
6. 其他技术
使用了 redis 做缓存、记录状态信息等
使用了 redis 做产品热度排行功能,具体使用 zset 实现,支持实时更新
使用了 nginx 做反向代理服务器,包括静态资源的下载,请求重写、转发等
前端使用了 vue + elementui 进行开发,支持移动端自适应(前端非本人开发)
数据库使用 mysql + snowflake 雪花算法实现分布式唯一主键,使用 mybatis-plus 快速查询
对表格(产品价格展示)进行处理,项目的数据来源为 python 爬虫(爬虫不是本人写的),爬下来的是磁盘文件,本人使用 java 读取文件内容,进行解析、过滤、转换格式后进行存储
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论