solr在酒店列表查询中的使用

################################

如果想深入开发建议使用solr

################################

根据博主项目整理solr在酒店列表查询中的使用,主要包括价格日历,库存,筛选条件,系统部署等

背景

酒店筛选条件主要包括关键词,入住地,入离开时间,价格,库存,星级,距离等查询条件

solr在酒店列表查询中的使用_第1张图片

系统边界

solr在酒店列表查询中的使用_第2张图片

solr集群根据业务需要有单机,master-salve,solrcloud三种选择

单个shard数据量建议不要超过10G

系统流程图

solr在酒店列表查询中的使用_第3张图片

索引创建主要包括增量与全量,增量建议通过接收MQ消息原子更新索引的方式实现,全量每日一次

需要考虑:异常处理,索引commit时间点,optimize时间点等

schema设计

关键词:多值字段,包括酒店名称,酒店地点,星际,商圈,城市等进行分词,常用第三方分词器包括:IK,庖丁,message4j等,需要注意兼容多音字

距离:solr支持空间搜索,距离分为圆与正方形两种

{!geofilt pt=39.995798,116.480003 sfield=position d=50 score=distance}

价格日历:房价会根据入离时间的不同而不同,比如国庆肯定要贵啦~~

实现方案1:将价格字段设置成动态字段,字段名称为 l_yyyyMMdd_l,值为该日期所有商品的最低价

索引创建时根据酒店SKU中日期字段分组,价格降序,取top1即可,库存类似

注意:solr对字段名称是数字的兼容性存在问题,字段名称不能以数字开头,见源码

solr在酒店列表查询中的使用_第4张图片

实现方案2:木有想到~~

索引查询

solr在酒店列表查询中的使用_第5张图片

solr索引流程图

solr在酒店列表查询中的使用_第6张图片

至此已经写完solr在酒店查询中的使用,上述功能点能够满足去哪,携程,艺龙等酒店预订网站的所有查询需求,并已在实际生产项目中进行使用,价格日历采用动态字段存在一定的缺陷,假如存放一年或者两年以上的价格,索引会变得相当宽,希望有经验或者有优化建议的猿猿们回复我~~~


应读者的要求,共享viso做图下载


你可能感兴趣的:(大数据,solr)