来源:http://blog.csdn.net/yangbutao/article/details/9450463

在电商平台中搜索是非常重要的功能,主要包括有搜索词类目导航、自动提示和搜索排序功能

自动提示如下图显示的,可以根据搜索词自动进行提示,并在列表中显示推荐的搜索词的document数量

类目导航如下图所示,比如在搜索框中搜索“牛奶”,则把相关的类目和当前类目对应的属性显示出来

下面就以上几种功能做示例讲解。

1、搜索排序

搜索功能中比较复杂的是文档的打分排序,solr中的打分规则继承了lucene中的相关的打分规则,这里通过solr的dismax查询解析器来支持复杂的打分

在打分的时候,会考虑以下因素,

搜索关键字匹配某些字段的打分比其他的字段要高(qf^)

对于某些字段,搜索字符串的密集度(phrase)的打分中占的比重(pf^)

其他复杂规则计算,比如销售量、价格、卖家等级等等都可以作为考虑的因素,影响打分(bf)

http://10.1.1.58:8080/solr/select?defType=dismax&qf=name^100  subject ^1 &q=sony mp3&pf=name^100  subject ^1&q.op=OR&bf=sum(recip(ms(NOW,last_modified),3.16e-11,1,1),div(1000,price))^100

这个查询的含义是,在name和subject中搜索关键字sony mp3,name和subject在字段查询中的比重分别为100、1(qf=name^100subject ^1);并且这两个字段phrase的打分为

pf=name^100 subject ^1,也就是name占的比重大一些;其他还参考产品的价格和商品更新时间(bf=sum(recip(ms(NOW,last_modified),3.16e-11,1,1),div(1000,price))^100)

2、自动提示facet
http://10.1.1.58:8080/solr/select?q=*:*&rows=0&facet=true&facet.field=name_autocomplete&facet.prefix=电视
根据电视的分词用facet进行自动的提示,提示的是分词

3、facet分类导航

用户在搜索框中进行搜索,下方会有分类导航,分类导航是一个树型的结构,比如

所有分类>奶粉/辅食/营养品>奶粉>牛奶粉

类别可以由属性,比如,牛奶粉的属性有‘品牌’、‘适用阶段’、‘适用年龄’、‘包装方式’、‘源产地’等

用户在搜索框中输入‘牛奶’,搜索引擎导航到'牛奶粉'这个类别下,并自动显示牛奶粉相关的属性,相关实现和算法有很多,下面的方法可以达到这个效果

分类导航可以参考搜索结果的头一条进行,比如得分最高的第一个document属于’牛奶粉‘这个类别,那么导航显示自然就导航到这个类别上;并且相关的属性就采用牛奶粉这个类别的属性,比如‘品牌’、‘适用阶段’、‘适用年龄’、‘包装方式’、‘源产地’,类别和属性的对应关系可以存储到其他地方。

分类导航的树形结构可以采用facet.pivot来实现

http://localhost:8983/solr/select?q=name:stock&rows=0&facet=true&facet.pivot=category,category1,category2,category3

类别属性的对应的值,采用基本的facet来实现
http://10.1.1.58:8080/solr/select?q=name:牛奶&fq=category1:奶粉&fq=category2:牛奶粉&rows=0&facet=true&facet.field=logo&facet.field=property1&facet.field=property2&facet.field=property3&facet.minc

solr在电商平台中的使用示例简析的更多相关文章

  1. Java生鲜电商平台-SpringCloud微服务架构中分布式事务解决方案

    Java生鲜电商平台-SpringCloud微服务架构中分布式事务解决方案 说明:Java生鲜电商平台中由于采用了微服务架构进行业务的处理,买家,卖家,配送,销售,供应商等进行服务化,但是不可避免存在 ...

  2. 转)SSO单点登录在互联网电商应用中的解决方案(基于CAS的改造)

    电商平台中无论是前端还是后端会存在大量的业务应用,在整个交易的过程中请求是在各个业务应用中流转的,对于用户来讲只需要登录一次就可以访问所有的业务,这就是单点登录SSO. 单点登录开源有很多的解决方案, ...

  3. 42、生鲜电商平台-商品的spu和sku数据结构设计与架构

    说明:Java开源生鲜电商平台中商品的spu和sku数据结构设计与架构,包括数据库图标与架构分析. 1. 先说明几个概念. 电商网站采用在商品模块,常采用spu+sku的数据结构算法,这种算法可以将商 ...

  4. Java生鲜电商平台-统一格式返回的API架构设计与实战

    Java生鲜电商平台-统一格式返回的API架构设计与实战 说明:随着互联网各岗位精细化分工的普及,出现了很多的系统架构设计,比如常见的前后端分离架构,后端提供接口给前端,前端根据接口的数据进行渲染,大 ...

  5. Java生鲜电商平台-订单模块状态机架构设计

    Java生鲜电商平台-订单模块状态机架构设计 说明:在Java生鲜电商平台中订单的状态流转业务        我们知道 一个订单会有很多种状态:临时单.已下单.待支付.待收货.待评价.已完成,退货中等 ...

  6. Java生鲜电商平台-电商会员体系系统的架构设计与源码解析

    Java生鲜电商平台-电商会员体系系统的架构设计与源码解析 说明:Java生鲜电商平台中会员体系作为电商平台的基础设施,重要性不容忽视.我去年整理过生鲜电商中的会员系统,但是比较粗,现在做一个最好的整 ...

  7. Java生鲜电商平台-供应链模块的设计与架构

    Java生鲜电商平台-供应链模块的设计与架构 说明:Java开源生鲜电商平台中供应链模块属于卖家的行为,也就是卖家如何管理他们自己的供应商,包括结算方式,压款方式,结算周期等等,超出了我这个B2B平台 ...

  8. Java生鲜电商平台-电商中海量搜索ElasticSearch架构设计实战与源码解析

    Java生鲜电商平台-电商中海量搜索ElasticSearch架构设计实战与源码解析 生鲜电商搜索引擎的特点 众所周知,标准的搜索引擎主要分成三个大的部分,第一步是爬虫系统,第二步是数据分析,第三步才 ...

  9. 39、生鲜电商平台-redis缓存在商品中的设计与架构

    说明:Java开源生鲜电商平台-redis缓存在商品中的设计与架构. 1. 各种计数,商品维度计数和用户维度计数 说起电商,肯定离不开商品,而附带商品有各种计数(喜欢数,评论数,鉴定数,浏览数,etc ...

随机推荐

  1. Linq中Select查询参数提取公共方法

    class Program { static void Main(string[] args) { var listTest1 = new List<Test1> { "}, & ...

  2. JavaScript中this的工作原理以及注意事项

    在JavaScript中,this 的概念比较复杂.除了在面向对象编程中,this 还是随处可用的.这篇文章介绍了this 的工作原理,它会造成什么样的问题以及this 的相关例子. 要根据this  ...

  3. js生成唯一值的函数

    利用了js的闭包性质 var uniqueNumber = (( function(){ var value = 0; return function(){ return ++value; }; }) ...

  4. C# 对动态编辑的一些学习笔记

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Comp ...

  5. slot的含义

    1) slot就是槽的意思,是一个资源单位,只有给task分配了一个slot之后,这个task才可以运行.slot分两种,map slot沪蓉reduce slot.另外,slot是一个逻辑概念,一个 ...

  6. HDU 2529 Shot (物理数学题)

    题目 解题过程: //物理数学题 #include<stdio.h> #include<string.h> #include<algorithm> using na ...

  7. 利用正则表达式解析URL

    -(NSString *) jiexi:(NSString *)CS webaddress:(NSString *)webaddress {      NSError *error;      NSS ...

  8. AsyncTask和Handler对比

    AsyncTask和Handler对比 1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操 ...

  9. 刘汝佳 算法竞赛-入门经典 第二部分 算法篇 第五章 2(Big Number)

    这里的高精度都是要去掉前导0的, 第一题:424 - Integer Inquiry UVA:http://uva.onlinejudge.org/index.php?option=com_onlin ...

  10. [STL]deque和stack、queue

    怎么说呢,deque是一种双向开口的连续线性空间,至少逻辑上看上去是这样.然而事实上却没有那么简单,准确来说deque其实是一种分段连续空间,因此其实现以及各种操作比vector复杂的多. 一.deq ...