

万村乐数字乡村里的可检索内容不少:村务论坛的帖子、通知公告、网格信息、政策文档。村民想找"去年的防汛补贴怎么领",如果只能按标题模糊匹配,基本找不到。中文和英文不同,词之间没有空格,直接拿LIKE '%防汛%'扫全表,数据量到几十万条时响应就到秒级了。我们给站内内容接了一套中文分词加倒排索引的检索方案,查询耗时从改造前的平均1.4秒降到120毫秒以内,召回相关帖子的准确率提升到89%。

为什么要中文分词
英文检索天然按空格切词,"digital village"切出两个词。中文"数字乡村防汛补贴"是一串字,必须靠分词器切成"数字/乡村/防汛/补贴"才有检索意义。万村乐的业务词很有地方特色,"网格员""村两委""土地流转"这些在通用词典里不一定准,所以我们在通用分词基础上挂了业务词库。实测挂词库后,政策类查询的命中率从64%提升到88%。
索引选型与存储
我们没有自研索引,而是用Elasticsearch承载站内检索,论坛帖子、公告、网格文档分别建索引。增量同步靠监听MySQL 8.0.28的binlog(Canal),帖子一发布就进索引,延迟控制在2秒内。对比早期用定时全量重建索引,每次重建要18分钟,期间检索不可用,现在增量同步彻底解决了这个空窗。
召回优化
召回阶段容易两个问题:一是分词太细导致召回太多噪声,二是太粗漏掉相关结果。我们做了两件事。第一,查询时用ik_smart做搜索分词(比索引时的ik_max_word更粗),减少碎词。第二,对论坛帖子和通知公告按bizTag加权,比如搜"医保"优先返回通知公告类,因为村民大多想找政策而非闲聊。
上线这套加权后,搜索结果首条相关率从71%提到86%。某村做土地确权查询时,村民输入"宅基地",前5条全部是政策解读帖,体验明显改善。
排序与相关性
默认TF-IDF在村务场景不够用,因为很多帖子词频差不多。我们引入时间衰减,新公告权重更高,再叠加标题命中加权。村民搜"防汛"时,当年的预警公告排在最前,三年前的旧帖沉下去。统计显示,用户点首条结果的比例从39%升到58%。

高亮与性能
前端用Ant-Design-Vue 3.2.10渲染结果,命中词高亮。检索接口加了一层Redis缓存,热门词(如"医保""补贴")的结果缓存60秒,命中率约34%,高峰期帮ES扛掉三成流量。索引分片按县划分,单县数据量控制在200万文档内,查询稳定。
方言与同义词
村务检索的难点是村民用词不标准。有人搜"医保",有人搜"合作医疗",有人搜"新农合",指的都是一回事。我们在分词之外挂了同义词表,查询时把同义词展开成布尔或。比如搜"医保"自动带上"合作医疗""新农合"的召回。实测同义词展开后,政策类查询的漏召回下降约18个百分点。
检索监控
检索质量要持续盯。我们记录每个查询的词、命中数、点击位置,按周出热词榜和低效词榜。低效词(搜了但前5条没点)单独分析,要么是分词不准要么是同义词缺失,针对性补词库。2024年靠这个闭环,站内检索的首条点击率从39%爬到61%。
性能压测
索引按县分片,单县数据控制在200万文档。我们用20个热词做压测,单分片QPS到800时P99延迟仍低于200毫秒。对比早期全表LIKE,查询耗时从1.4秒降到120毫秒以内,村民搜"宅基地""补贴"基本秒出。
移动端检索
小程序和APP的检索入口共用同一套ES,前端用Ant-Design-Vue渲染结果,命中高亮。移动端额外做了拼音容错,老人用拼音输入"yanglao"也能召回"养老"相关帖子。
检索反哺运营
2024年平台检索日均调用约3.2万次,缓存命中率34%,热门词如"医保""补贴""防汛"的缓存把ES压力降了三成。检索日志还反哺内容运营:某季度"土地流转"搜索量环比涨了2.4倍,我们随即组织专题,阅读量比普通帖高约3倍。下一步计划接入语音检索,覆盖不擅长打字的老年群体。
检索的工程权衡
检索不是越准越好,要在准和快之间取舍。同义词展开能提召回但会引入噪声,我们给同义词加权而非等权,核心词权重高。索引刷新定2秒延迟,村民基本无感,P99稳定在200毫秒内,首条相关率保持86%以上。工程上没有银弹,只有适合村务场景的平衡点。我们还做了检索降级:ES故障时切到MySQL的LIKE兜底,虽然慢但能用。某次ES集群重启的8分钟里,降级扛住了约4000次查询,没让用户感知中断。可降级是检索服务必须有的底线。检索上线两年,已成为村民找村务信息的第一入口,日均调用稳定在3万次以上。
检索体验的优化是个持续过程。我们每季度根据热词和低效词榜调一次词库和权重,村民搜"补贴""医保""宅基地"的体感逐年变好。2024年底用户调研里,"找信息方便"的好评分比年初高了21个百分点,站内检索算真正立住了。
检索系统的价值,最终看村民能不能秒找到要的村务信息。2024年这项体感指标稳住了,站内检索成了村民日常用得上的工具。
小结
万村乐数字乡村的站内检索,技术上没有特别花哨的东西,关键是把中文分词、倒排索引、增量同步和按业务加权重排这几步做扎实。村民能不能搜到想要的村务信息,直接影响他们对平台的信任。下一步我们准备把语音搜索接进来,覆盖不擅长打字的老年村民。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。