solr整合springmvc开发(二)

博客的内容我希望对读者有用,如果哪些知识点不清楚,我们可以交流,共同学习。。。。

前提工作准备完毕,着手开发网站了。首先把环境搭建好,导入solr相关jar包和springmvc的jar包。

我今天讲的是一个网站商品显示功能,通过查询商品名称,价格区间,商品分类来显示。

springmvc.xml配置如下:

   
    
    
    
    
    
        
        
    

    
        http://localhost:8080/solr/products">         -----索引库在solr服务器的地址
    

dao层代码:

@Repository

public class ProductDaoImpl implements ProductDao {
    
    @Autowired
    private HttpSolrServer solrServer;
    
    @Override
    public Page queryProduct(SolrQuery solrQuery) throws Exception {
        Page page = new Page();
        
        List pList = new ArrayList();
        QueryResponse response = solrServer.query(solrQuery);
        //获取文档集合
        SolrDocumentList results = response.getResults();
        //获取总命中数
        Long numFound = results.getNumFound();
        //设置总记录数
        page.setRecordCount(numFound.intValue());
        //保存数据到products
        for (SolrDocument doc : results) {
            Products products = new Products();
            //设置商品pid
            String pid = (String) doc.get("id");
            products.setPid(pid);
            //设置商品图片
            String product_picture = (String) doc.get("product_picture");
            products.setPicture(product_picture);
            //设置商品价格
            Float product_price = (Float) doc.get("product_price");
            products.setPrice(product_price);
            //设置商品名称
            String product_name = (String) doc.get("product_name");
            Map>> map = response.getHighlighting();
            Map> map2 = map.get(pid);
            List list = map2.get("product_name");
            if(list!=null && list.size()>0){
                product_name=list.get(0);
            }
            products.setName(product_name);
            pList.add(products);
        }
        page.setProductList(pList);
        return page;
    }

service层:

@Autowired
    private ProductDao productDao;
    @Override
    public Page queryProduct(String queryString, String catalog_name, String price, String sort, Integer page) throws Exception {
        
        SolrQuery solrQuery = new SolrQuery();
        //设置主查询
        if(queryString!=null && !"".equals(queryString)){
            solrQuery.setQuery(queryString);
        }else{
            //solrQuery.set();
            solrQuery.setQuery("*:*");
        }
        //查询分类名称
        if(catalog_name!=null && !"".equals(catalog_name)){
            solrQuery.addFilterQuery("product_catalog_name:"+catalog_name);
        }
        
        //设置价格区间
        if(price!=null && !"".equals(price)){
            String[] split = price.split("-");
            solrQuery.addFilterQuery("product_price:["+split[0]+" TO " +split[1]+"]");
        }
        //排序
        if("1".equals(sort)){
            solrQuery.addSort("product_price",ORDER.desc);
        }else{
            solrQuery.addSort("product_price",ORDER.asc);
        }
        
        // 设置分页
        if(page==null){
            page=1;
        }
        solrQuery.setStart((page-1)*Constants.pageSize);//设置起始值
        solrQuery.setRows(Constants.pageSize);//设置每页数据大小
        
        //设置默认查询字段
        solrQuery.set("df","product_keywords");
        
        // 9.设置高亮
        // 开启高亮
        solrQuery.setHighlight(true);
        // 指定设置高亮字段
        solrQuery.addHighlightField("product_name");
        // 指定设置高亮显示前缀
        solrQuery.setHighlightSimplePre("");
        //指定设置高亮显示后缀
        solrQuery.setHighlightSimplePost("
");
        
        Page pageBean = productDao.queryProduct(solrQuery);
        
        //获取总记录数
        Integer recordCount = pageBean.getRecordCount();
        //总页数
        Integer pageCount = (int) Math.floor(recordCount/Constants.pageSize);
        pageBean.setPageCount(pageCount);
        //s设置起始页
        pageBean.setCurPage(page);
        return pageBean;
    }

你可能感兴趣的:(solr整合springmvc开发(二))