日度归档:2011年7月14日

Sphinx构建电商网站高性能搜索服务

公司新项目进入开发阶段,已把整个网站进行拆分,方便开发人员进行分配开发任务。因为搜索服务比较重要,所以先行开发,目前已完成搜索服务的构建。以后主站开发时,直接对接口进行开发就能实现商品的搜索功能了。

需求

通过关键词、分类、价格范围、商品sku等参数进行组合搜索

通过上架时间、价格等参数进行排序显示

方案

sphinx+libmmseg 做搜索引擎 mysql做数据源

php+SphinxClient做REST风格搜索接口

应用服务器通过搜索接口搜索数据时,接口只返回商品的ID号,然后由应用服务器根据ID号从cache中读取商品的完整信息。如果搜索出的商品被删除时,每页显示的商品数会减少一定的个数。

搜索更新策略

因为开始阶段商品等数量较少,每天重新做一次主索引,这样可以把删除的商品从索引中清除掉。

采用主索引+增量索引的方式,实现准实时搜索功能

每分钟新建一次增量索引,每天重新生成一次主索引,无需重启服务完成索引的更新!

后期词库整理

固定时间周期进行中文分词词库的新加分词工作,对商品所需的关键词进行分析整理添加,保证用户搜索时,提供的搜索结果更加精确!