• 结果集pojo和根据条件查询


    一.ProductResult结果集

    private long totalPages;
    private long recordCount;
    private List<ProductSearch> productSearchList;
    二.搜索结果服务层service
    根据查询对象在索引库进行查询
    SolrServer solrServer=new HttpSolrServer("http://192.168.0.128:8080/solr/collection1");
            //根据query对象进行查询
            QueryResponse response = solrServer.query(query);
            //取查询结果
            SolrDocumentList solrDocumentList = response.getResults();
            //取查询结果总记录数
            long numFound = solrDocumentList.getNumFound();
            ProductResult productResult=new ProductResult();
            productResult.setRecordCount(numFound);
            List<ProductSearch> itemList = new ArrayList<>();
            //把查询结果封装到SearchItem对象中
            for (SolrDocument solrDocument : solrDocumentList) {
                ProductSearch item = new ProductSearch();
                item.setProduct_type((String) solrDocument.get("product_type"));
                item.setProduct_id((String) solrDocument.get("id"));
                item.setProduct_img((String) solrDocument.get("product_img"));
                item.setProduct_price((long) solrDocument.get("product_price"));
                item.setProduct_sale(Integer.parseInt((String) solrDocument.get("product_sale")));
                item.setProduct_name((String)solrDocument.get("product_name"));
    //            item.setProduct_number(Integer.parseInt((String)solrDocument.get("product_number")));
                //取高亮显示
                Map<String, Map<String, List<String>>> highlighting = response.getHighlighting();
                List<String> list = highlighting.get(solrDocument.get("id")).get("product_name");
                System.out.println(list);
                String title = "";
                if (list != null && list.size() > 0) {
                    title = list.get(0);
                } else {
                    title = (String) solrDocument.get("product_name");
                }
                System.out.println(title);
                item.setProduct_name(title);
                //添加到商品列表
                itemList.add(item);
            }
            //把结果添加到SearchResult中
            productResult.setProductSearchList(itemList);
            //返回
     
            return productResult;
    三.计算总条数,总页数,写入结果集合
    //根据查询条件拼装查询对象
    //创建一个SolrQuery对象
    SolrQuery query = new SolrQuery();
    //设置查询条件
    query.setQuery(queryString);
    //设置分页条件
    if (page < 1) page =1;
    query.setStart((page - 1) * rows);
    if (rows < 1) rows = 10;
    query.setRows(rows);
    //设置默认搜索域
    query.set("df", "product_keywords");
    //设置高亮显示
    query.setHighlight(true);
    query.addHighlightField("product_name");
    query.setHighlightSimplePre("<font color='pink'>");
    query.setHighlightSimplePost("</font>");
    //调用dao执行查询
    ProductResult productResult=this.searchquery(query);
    //计算查询结果的总页数
    long recordCount = productResult.getRecordCount();
    long pages =  recordCount / rows;
    if (recordCount % rows > 0) {
        pages++;
    }
    productResult.setTotalPages(pages);
    //返回结果
    return productResult;
    四.将结果集通过控制层传到前台
    mast = new String(mast.getBytes("iso8859-1"),"UTF-8");
    System.out.println("用户要搜索的是"+productSearch.getMast());
    ProductResult productResult = null;
    try {
        productResult = this.productSearch.search(productSearch.getMast(), page, rows);
        System.out.println(productResult);
    } catch (Exception e) {
        e.printStackTrace();
    }
    //把结果传递给页面
    model.addAttribute("query", mast);
    model.addAttribute("totalPages", productResult.getTotalPages());
    model.addAttribute("itemList", productResult.getProductSearchList());
    model.addAttribute("page", page);
    model.addAttribute("query", productResult);
     
    return "result";
  • 相关阅读:
    Cookie实现记住密码功能
    Mybatis实现修改功能
    微信企业号开发
    java使用CXF动态调用webservice接口
    Oracle数据库监听失败
    java实现导入excel功能
    全球根服务器分别部署在哪里?
    微软披露大规模网络钓鱼活动详细信息
    常用名称
    Centos设置网络(固定IP)
  • 原文地址:https://www.cnblogs.com/llaq/p/9441098.html
Copyright © 2020-2023  润新知