SOLR在电商中的基本应用
- 高级的全文搜索功能
- 专为高通量的网络流量进行的优化
- 基于开放接口(XML和HTTP)的标准
- 综合的HTML管理界面
- 可伸缩性-能够有效地复制到另外一个Solr搜索服务器
- 使用XML配置达到灵活性和适配性
- 可扩展的插件体系
环境搭建
略。
字段的基本设计
- 字段仅添加搜索相关的字段,比如商品id、标题、品牌名称、分类名称,商品价格、上架时间,是否有货等,注意,这里存的字段主要是为了搜索出商品id,在展示时建义通过搜索到的商品id去数据库查找,因为有可能数据已经变更了,而SOLR还没更新,比如像价格,是否有货这种必须要时实查。
- 添加好中文分词包,并配置在需要中文分词搜索的字段。
- 维护好自建词库,以免被误拆,如品牌、分类等,像品牌随时在新增的词库,可以定时跑脚本更新。
- 配置好合并搜索项(copyField),在搜索时我们不仅需要搜索包含此关键字的商品名,可能需求是这样:包含此关键字的商品名、或包含此关键字的品牌、或包含此关键字的分类。
- 正确配置multiValued,有些字段有多个值,比如分类,一般会有一级分类,二级分类,三级分类,我们在搜索时针对的是所有分类名。
- 如果搜索出多个商品,没指定排序时谁展示在最前面?所以还需要一个权重字段,根据一些算法(如下单率、热度等)得到,定时跑出权重值写到表中,再更新到SOLR中。
搜索商品
搜索商品时直接搜索合并的搜索项(copyField)字段,在搜索时,如果不是一个词会存在搜索不到的情况,比如”爱他”是搜索不到爱他美奶粉的,我们想要如果不是一个词就拆成每一个字去搜索,如”爱他”拆分后是”爱”和”他”,我们想去搜索商品中相关信息中同时包含”爱”和”他”的商品,我的解决方法是,先调用SOLR的拆词分析,返回的每一个拆分字再作为搜索条件。
搜索筛选项
使用SOLR的facet反推商品筛选项和数量
索引更新
- 定时全量更新
- 每一个商品的相关字段更新都要调用一个统一更新SOLR索引的API。