mrbear 发表于 2017-12-18 17:42:03

lucene之solr京东案例

package com.jd.service;  

  

import org.apache.solr.client.solrj.SolrQuery;  

import org.apache.solr.client.solrj.SolrQuery.ORDER;  

import org.springframework.beans.factory.annotation.Autowired;  

import org.springframework.stereotype.Service;  

  

import com.jd.mapper.ProductMapper;  

import com.jd.pojo.Product;  

import com.jd.pojo.QueryVo;  

import com.jd.pojo.ResultModel;  

/**  * 实现类
  *
@author Easong  *
*/  
@Service
  

public>
// 每页显示的条数  private final static Integer PAGE_SIZE = 32;
  

  @Autowired
  private ProductMapper productMapper;
  

  @Override
  public ResultModel<Product> findAll(QueryVo queryVo) throws Exception {
  

  // 创建solr查询对象
  SolrQuery solrQuery = new SolrQuery();
  

  // 设置查询关键字
  if (queryVo.getQueryString() != null && !"".equals(queryVo.getQueryString())) {
  solrQuery.setQuery(queryVo.getQueryString());
  } else {
  solrQuery.setQuery("*:*");
  }
  

  // 设置过滤查询--商品类别
  if (queryVo.getCatalog_name() != null && !"".equals(queryVo.getCatalog_name())) {
  solrQuery.setFilterQueries("product_catalog_name:" + queryVo.getCatalog_name());
  }
  

  // 设置价格排序
  if ("1".equals(queryVo.getSort())) {
  // 升序
  solrQuery.setSort("product_price", ORDER.asc);
  } else if("0".equals(queryVo.getSort())){
  // 降序
  solrQuery.setSort("product_price", ORDER.desc);
  }
  // 设置价格查询区间
  if (queryVo.getPrice() != null && !"".equals(queryVo.getPrice())) {
  String[] split = queryVo.getPrice().split("-");
  if (split != null && split.length > 1) {
  solrQuery.setFilterQueries("product_price:[" + split + " TO " + split + "]");
  }
  }
  

  // 分页查询
  if (queryVo.getPage() == null) {
  queryVo.setPage(1);
  }
  Integer currPage = queryVo.getPage();
  // 开始索引
  solrQuery.setStart((currPage - 1) * PAGE_SIZE);
  // 每页显示条数
  
      solrQuery.setRows(PAGE_SIZE);
  

  // 设置默认搜索域
  solrQuery.set("df", "product_keywords");
  // 开启高亮显示
  solrQuery.setHighlight(true);
  // 设置显示域名
  solrQuery.addHighlightField("product_name");
  // 设置前缀
  solrQuery.setHighlightSimplePre("<span style=\"color:red\">");
  // 设置后缀
  solrQuery.setHighlightSimplePost("</span>");
  // 调用Mapper层
  ResultModel<Product> resultModel = productMapper.findAll(solrQuery);
  // 设置当前页
  
      resultModel.setCurPage(currPage.longValue());
  // 设置总页数
  Double pageSize = Math.ceil(resultModel.getRecordCount().doubleValue() / PAGE_SIZE);
  resultModel.setPageCount(pageSize.longValue());
  return resultModel;
  }
  

  
}
页: [1]
查看完整版本: lucene之solr京东案例