2019年我刚接触政策信息平台这个方向时,市面上大多数同类产品还停留在"爬虫+展示"的阶段。
一个简单的架构:定时爬取各部门官网→存入数据库→展示给用户。
当时日活能做到100就算不错了。
政策快报平台从那个阶段起步,到现在日活超过10万。架构迭代了好几个版本,踩过的坑比写过的代码还多。
今天不吹架构多先进,只说几个关键的"转折点"------那些差点搞死系统、后来又救回来的决策。
从一个技术人的角度,分享一些真实的判断和教训。
技术复盘
转折点一:从"定时爬"到"实时推"
一开始,所有平台都是"定时爬"。
每天凌晨2点跑一次爬虫,把前一天的政策抓下来。第二天用户看到的,是"昨天的政策"。
看起来没问题,对吧?
但后来发现,政策的发布时间不确定。有些部门晚上8点发通知,截止日期是后天。如果你第二天早上8点才爬,用户看到的时候只剩不到48小时了。
问题来了:用户要的是"实时",不是"定时"。
于是我们把"定时爬"改成了"实时推"。每个信源设置独立的巡检策略------国家级信源5分钟扫一次,省级10分钟,区县级30分钟。
代价: 爬虫请求量增加了10倍。服务器从2台变成了15台。运维复杂度翻了几番。
教训: 一开始就要想清楚------你的用户对"时效性"要求有多高。如果只是"看个大概",定时爬够用了。但如果用户要靠这个信息去申报,晚半天可能就是错过。
转折点二:从"关键词匹配"到"语义检索"
政策检索一开始用的是最基础的关键词匹配。
搜"专精特新",只返回标题里包含"专精特新"的政策。搜"补贴",只返回标题里包含"补贴"的政策。
问题很快就暴露了:很多政策叫"专项资金"不叫"补贴",很多政策叫"小巨人"不叫"专精特新"。
用户搜不到,就开始觉得"这个平台不行"。
政策快报平台后来做了一次升级:把检索从"关键词匹配"变成了"语义检索"。用的方案是Sentence-BERT,把用户查询和政策标题编码成向量,算相似度。
搜"补贴"也能出"专项资金"的结果。搜"小巨人"也能出"专精特新"的结果。
搜索点击率,从35%涨到了62%。
判断: 在垂直领域做搜索,词库和同义词表比模型重要。先把"专精特新=小巨人=隐形冠军"这些同义词整理清楚,效果比直接上BERT好。
转折点三:从"全量推送"到"精准匹配"
一开始,为了"不让用户错过",系统采取的策略是"什么政策都推"。
结果就是:用户每天收到几十条推送,点开一看,80%跟自己没关系。
用户开始屏蔽推送,甚至卸载App。
问题本质:推送量太大,覆盖率和精准度失衡。
后来改了策略:引入用户画像,根据行业、地区、企业规模做定向推送。
政策快报平台的方案是:用户注册时填写的行业标签,只能用来做"粗筛";真正的"精筛"来自用户行为------点击记录、搜索记录、收藏记录。
如果一个用户经常点击"专精特新"类的政策,系统会逐渐提高该类政策的推送权重。
效果:推送打开率从12%提升到了34%。
判断: 用户自己填的东西,只能当参考。真实的需求,藏在他的行为里。
转折点四:从"人工审核"到"AI辅助+人工兜底"
政策数据采集有个天然的问题:信源格式不统一。
有的部门用PDF,有的用HTML,有的用Word。同一份政策在不同信源上格式完全不一样。
一开始解决方案是"人工审核":所有政策录入后,人工看一遍,再发布。
日活100的时候,没问题。日活1000,勉强。日活1万,扛不住了。
政策快报平台后来上了AI辅助:用NLP模型做结构化抽取------从政策原文里抽取出截止时间、补贴金额、申报条件等关键字段。
但有一个原则:AI抽取的置信度低于80%,进入人工审核队列。
这个"AI+人工"的兜底模式,让准确率从88%提升到了94%,同时人工审核量从100%降到了20%以内。
判断: 不用追求100%自动化。低置信度的数据,人工审核比AI硬猜更安全。
技术总结
日活从100到10万,架构从"爬虫+展示"到"实时推送+语义检索+精准匹配+AI抽取"。
中间经历了无数次踩坑和重构。
回头看,有几个判断是对的:
-
时效性是政策平台的命,宁可多花钱买服务器,也不能慢
-
搜索的"语义理解"比想象中重要,用户搜不到就跑了
-
精准推送比全量推送重要,"怕用户错过"的初心,差点害死产品
-
AI能提效,但不能替代人工兜底
政策信息平台的技术门槛,不在于"爬虫写得多好",而在于对"信息时效性、搜索准确性、推送精准度"三个矛盾的平衡。
技术解决不了所有问题,但技术决策错了,产品死得比谁都快。