zoukankan      html  css  js  c++  java
  • 结果集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";
  • 相关阅读:
    Mysql登录错误:ERROR 1045 (28000): Plugin caching_sha2_password could not be loaded
    Docker配置LNMP环境
    Docker安装mysqli扩展和gd扩展
    Docker常用命令
    Ubuntu常用命令
    单例模式的优缺点和使用场景
    ABP 多租户数据共享
    ABP Core 后台Angular+Ng-Zorro 图片上传
    ERROR Error: If ngModel is used within a form tag, either the name attribute must be set or the form control must be defined as 'standalone' in ngModelOptions.
    AbpCore 执行迁移文件生成数据库报错 Could not find root folder of the web project!
  • 原文地址:https://www.cnblogs.com/llaq/p/9441098.html
Copyright © 2011-2022 走看看