在线商务的成功很大程度上取决于搜索功能的正确运行。系统必须能够“理解”各种甚至最不寻常的查询变体,同时在大型促销日等高并发场景下保持稳定。Price.ru(价格比较服务)曾面临搜索功能不完善的挑战。什么是“直接搜索”?其落地实施如何将购买转化率提升了20%?
爱德华·阿什拉夫扬,Price.ru 首席执行官
今年,价格比较服务 Price.ru 迎来成立26周年。平台展示超200万件商品,入驻约4000家在线商店。目前公司正进行大规模转型,核心任务是彻底重构网站搜索内核。我们从基于二进制索引的搜索转向基于数据的直接搜索,成效显著:搜索与筛选功能的易用性及性能大幅提升,有效推动了转化率增长。
本文适合哪些读者
本文旨在分享解决搜索问题的经验与通用理念,而非手把手构建系统的操作手册。通过学习核心理念,读者可理解其工作原理并应用于自身业务。
搜索引擎是根据用户查询提供结果的综合系统,其实现方式由业务需求决定。例如,价格比较服务需综合考虑大量元素才能精准展示商品。我们在筹备变革时发现相关公开资料匮乏,故决定与在线零售同行分享研究成果。
那么,为何要对原有搜索功能进行改造?
搜索结果经常不准确
原搜索系统维护困难,优化相关性耗时极长,导致用户难以找到目标内容。典型案例如下:输入“телек”(电视/电信设备非正式简称)返回电信机柜;输入“мобилка”(手机俗称)仅显示同名儿童游戏;输入“домашний телефон”(家用电话)却返回音响面板。
因此,搜索转型的首要目标是实现快速添加同义词和调整排序规则,确保结果精准相关。
搜索结果数据更新频率过低
原系统中,在线商店每日最多更新3次商品,且受限于特定时间窗口。商品进入总数据库后,还需写入“二进制索引”才能被检索,每次更新耗时数小时,严重影响商家体验。
网站难以承受高负载
旧版搜索在“黑色星期五”等流量高峰期稳定性差,直接影响页面索引效率及搜索结果排名质量。
搜索排名问题
搜索系统将查询分解为词元(如“iPhone 15 Pro Max智能手机”拆解为[智能手机]+[iPhone 15]+[Pro]+[Max])。传统做法是用逻辑运算符“或”连接关键词以扩大召回范围,但这会导致结果过泛(如搜iPhone 15出现iPhone 12-14及其他品牌),此时精准排序至关重要——名称包含更多查询词项的商品应优先展示。
当前搜索的工作原理:变革与成效
精确搜索更准确,按逻辑“与”匹配
我们改用“与”运算符连接词元,使结果严格匹配查询。虽召回量减少,但精准度显著提升,用户仅看到名称包含所有搜索词的商品。
同时,我们重构并扩展了同义词库以保障语义理解。例如,将“手机”、“智能手机”、“移动设备”及口语化表达均映射为同一概念。当用户输入“手机, iPhone 15”时,系统能自动识别其与“智能手机”等价,从而返回正确结果。
Feed加载时效从数小时缩短至数分钟
新方案大幅提速数据同步。商品信息传输至Price.ru后几乎实时上线,无需等待批量索引。若查询未命中缓存,系统将直接检索包含商品、型号等信息的综合数据库。
此外,所有商品型号和报价均经属性标注:每条报价关联具体网店,系统可实时校验账户余额以决定是否展示;同时关联价格表,支持实时监控同步状态。
可扩展性显著增强
采用PostgreSQL工业级方案,通过tsvector函数实现全文检索,并利用标准复制机制提升扩展性。新架构可在流量激增时自动扩展资源池,降低负载风险,避免页面过载。
技术数据:
● 数据库服务器预留充足余量:专用硬件服务器(28台中的第1台),配置256GB内存+RAID10(8块1.5TB SSD);
● 卫星服务垂直扩展:API、Feed加载器等虚拟机支持纵向扩容;
● 水平扩展能力:通过PostgreSQL标准功能增加从属服务器;API服务通过克隆无状态服务器实现横向扩展。
技术栈从C++迁移至SQL和Python
技术栈:SQL、Python 3.11、PostgreSQL 15.1
C++专家稀缺导致维护成本高昂。新栈不仅易于开发维护,且在经济性上更为合理。
服务器数量至少减少4倍
新架构仅需2台数据库主从服务器、1台API服务器及1台应用加载服务器,大幅精简硬件规模,优化流程并降低成本。
结论:Price.ru业务指标变化
● 搜索速度平均提升30-40%;
● Feed加载时间从数小时缩短至几分钟;
● 服务器数量减少至少4倍(含revamp及API服务器);
● 取消Yandex机器人索引限速,改善搜索排名;
● 转化率提升20%;
● 页面浏览量增加149%;
● 跳出率降低80%;
● 用户停留时长增加132%。
爱德华·阿什拉夫扬,
Price.ru首席执行官
For NEW RETAIL

