最近开发了一起搜题小程序,总结一下涉及的技术点及存在的问题,以及搜题接口分享给大家。
搜索试题接口:https://www.17st.cn/openapi/question/search?token=6O7ddw7v&q=马克思
查看答案接口:https://www.17st.cn/openapi/question/answer?token=6O7ddw7v&id=47OYmd1X
体验一起搜题:https://www.17st.cn/images/wxcode.jpg
一、数据采集建立题库,怎样才能采集到试题答案。
选择行业排名靠前的几个网站作为目标网站;
分析目标网站是否有防采集机制。比如
1、是否需要登录注册才能查看答案
2、是否对登录用户有次数限制
3、是否对IP有访问次数限制等
二、数据清洗入库后,怎么才能搜索到。
使用solr做全文检索,采集的题库去重后仍然有1000多万记录,数据库模糊查询自然行不通。
列表页通过solr负责分词搜索及排序,只索引试题题干和id,详情页通过试题主键id查询数据库。
前期性能基本没什么问题,生产环境压力测试5个并发请求无压力,勉强支撑10个并发。
三、数据返回接口设计
1、id生成避免使用mysql自增长,容易被爬虫通过遍历id采集。
2、接口添加身份标识,对身份标识鉴权,限制访问次数。
3、对接口每天总调用次数做限制
4、对答案等关键数据加密
四、solr设计,数据库设计等具体实现下篇继续...