Solr的原理及在项目中的使用实例.
前面已经讲过 如果安装及配置Solr服务器了,那么现在我们就来正式在代码中使用Solr.1,这里Solr主要是怎么使用的呢?? 当我们在前台页面搜索商品名称关键词时,我们这时是在Solr库中去查找相应的商品信息,然后将搜索关键词高亮. 2,那么Solr库中的商品信息又是如何添加的呢?? 当我们在给商品上架的时候,将商品信息update 到mysql数据库中的bbs_product表中,然后同样的将相应的信息 添加到Solr库中.接下来就看代码的具体实现吧:? 一,商品上架 <<<
点击上架触发isShow事件: 接着到Controller层:ProductController.java:
@RequestMapping("/isShow.do" "forward:/product/list.do" }
接着看Service层:ProdcutServiceImpl.java: @Autowired
private SolrServer solrServer;
Product product = product.setIsShow(
SolrInputDocument doc =
doc.setField("id"
Product p = doc.setField("name_ik"
doc.setField("url",p.getImgUrls()[0
doc.setField("brandId"
SkuQuery skuQuery = skuQuery.setOrderByClause("price asc" skuQuery.setPageNo(1 skuQuery.setPageSize(1 List
这里使用SolrInputDocument 来保存商品信息,其中doc.setField("name_ik",p.getName());的name_ik 是我们在solr 配置文件配置的IK 分词器的字段,?doc.setField("url",p.getImgUrls()[0]); 这里我们也只是取第一张图片的url用来展示.这里我们还用到了skuQuery,因为一个商品中不同的颜色不同的尺码都可能有不同的价格,我们在这里 是取到同一个productId下价格最小的来给显示~然后再就是将我们已经设置好的 到了这里上架的功能就做好了,这也是给后面Solr查询做好铺垫.二,前台使用Solr查询到了这里就开始查看前台页面了,前台页面是扒的网上的,具体业务逻辑是自己修改的,页面如下:
encoding
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
encoding
/
portal
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc-portal.xml
1
portal
/
第二个就是 这样就就可以直接访问了.当我们输入2016 点击查询后会出现什么? 我把已经做好的页面展示一下:?
@RequestMapping(value="/" "index"
@RequestMapping(value="/search"
List
提示: 这里使用到了SolrService,相信看我以前博文的朋友都知道这个地方还需要配置dubbo,就是服务提供方和适用方,这里为了简便直接略过,实际开发中是必须要配置的,否则就调用不了SolrService中的方法了.这个controller 中往search.jsp中put了很多东西,具体这些东西什么用我们可以先不管,我们先看下search.jsp页面.而且这个controller中查询brand 是从redis中查询出来的,我们会在下面讲到这个.
已选条件:
${m.key }:<${m.value }<
上面这个地方就是为何要在controller设置map值了,这个是显示已选择的过滤条件. <div class="cnblogs_code">
<品牌:
<${brand.name }
<价格:
<0-99
<100-299
<300-599
<600-999
<1000-1599
<1600以上
|