(六)通过solr7的API实现商品的列表查询

工具类:

获取 HttpSolrClient
public class Constant {
public static HttpSolrClient getSolrClient() {
HttpSolrClient solrServer= new HttpSolrClient.Builder("http://127.0.0.1:8080/solr/core1").build();
return solrServer;
}
}

jsp表单:

<form id="actionForm" action="serch.do" method="POST">
<div class="form">
<input type="text" class="text" accesskey="s" name="queryString" id="key" value="${queryString }"
autocomplete="off" onkeydown="javascript:if(event.keyCode==13) {query()}">
<input type="button" value="搜索" class="button" onclick="query()">
</div>
<input type="hidden" name="catalog_name" id="catalog_name" value="${catalog_name }"/>
<input type="hidden" name="price" id="price" value="${price }"/>
<input type="hidden" name="page" id="page" value="${page }"/>
<input type="hidden" name="sort" id="sort" value="${sort }"/>
</form>

Controller控制层:

//搜索
@RequestMapping("/serch.do")
public String serchProduct(String queryString,String catalog_name,Integer price,String page,String sort ,Model model) throws Exception{
       Result result = productService.querylist(queryString,catalog_name,price,page,sort);
System.out.println(result);
model.addAttribute("result", result);
model.addAttribute("queryString",queryString);
model.addAttribute("商品",catalog_name);
System.out.println("访问成功");
return "product_list";
}

service层,没有dao层这里直接在service查询solr,童鞋可以自己使用dao:

    //主列表查询
public Result querylist(String qName, String catalog_name, Integer price, String page, String sort) throws Exception {
HttpSolrClient solrServer = Constant.getSolrClient();
//使用solrQuery封装查询条件
SolrQuery solrQuery = new SolrQuery(); //封装主查询条件
if(qName!=null && !qName.equals("")){
//solrQuery.setQuery(qName);
//关键词 商品名称
solrQuery.setQuery("p_name:" + qName+"");//^10是查询权重 solrQuery.setStart();
solrQuery.setRows();
//开启高亮
solrQuery.setHighlight(true);
solrQuery.addHighlightField("p_name");
solrQuery.setHighlightSimplePre("<font color='red'>");
solrQuery.setHighlightSimplePost("</font>");
}else{
solrQuery.setStart();
solrQuery.setRows();
solrQuery.setQuery("*:*");
} QueryResponse resp = solrServer.query(solrQuery);
Map<String, Map<String, List<String>>> highlighting = resp.getHighlighting();
SolrDocumentList results = resp.getResults();
Result result = new Result();
List<Product> pList = result.getProductList();
for (SolrDocument doc : results) {
Product product = new Product();
System.out.println(doc.getFieldValuesMap());
String id = (String) doc.get("id");//id
Integer product_number = Integer.parseInt(doc.get("p_number")+"");//数量
String product_name = (String) doc.get("p_name");//商品名称
Double product_price = (Double.parseDouble(doc.get("p_price")+"")) ;//价格
String product_catalog_name = (String) doc.get("p_catalog_name");//商品分类名称
String product_picture = (String) doc.get("p_picture");//图片 //商品ID
product.setPid(Integer.valueOf(id));
//商品名称
if (null!=highlighting) {
Map<String, List<String>> map = highlighting.get(id);
List<String> list = map.get("p_name");
//String name = (String) doc.get("name_ik");
product.setName(list.get());
}else {
product.setName(product_name);
} //图片
product.setPicture(product_picture);
//价格
product.setPrice(product_price);
//品牌ID
product.setCatalogName(product_catalog_name);
//商品数量
product.setNumber(product_number);
pList.add(product);
}
result.setProductList(pList);
return result;
}

(六)通过solr7的API实现商品的列表查询的更多相关文章

  1. MyBatis(六):Mybatis Java API编程实现一对多、一对一

    最近工作中用到了mybatis的Java API方式进行开发,顺便也整理下该功能的用法,接下来会针对基本部分进行学习: 1)Java API处理一对多.多对一的用法: 2)增.删.改.查的用法: 3) ...

  2. 【SSH系列】一步步深入springmvc+商品列表查询demo

    在前面的博文中,小编主要简单的介绍springmvc的体系结构.mvc模式的优缺点以及mvc框架,今天我们来继续学习springmvc的相关知识,在这篇博文中,小编讲解过springmvc的体系结构, ...

  3. 写个简单的chrome插件-京东商品历史价格查询

    说chrome插件编写的先关文章, 首推小茗的[干货]Chrome插件(扩展)开发全攻略. 有非常完善的理论,引用和demo代码. 但是还是建议看官方的 chrome extensions. chro ...

  4. 商城02——dubbo框架整合_商品列表查询实现_分页

    1.   课程计划 1.服务中间件dubbo 2.SSM框架整合. 3.测试使用dubbo 4.后台系统商品列表查询功能实现. 5.监控中心的搭建 2.   功能分析 2.1. 后台系统所用的技术 框 ...

  5. TFS API : 四、工作项查询

    TFS API : 四.工作项查询 本节将讲述如何查询工作项,将用户统计数据. 使用WorkItemStore.Query方法进行查询工作项,其使用的语法和SQL语法类似: Select [标题] f ...

  6. [翻译]在ASP.NET Web API中通过OData支持查询和分页

    OData可以通过形如http://localhost/Products?$orderby=Name这样的QueryString传递查询条件.排序等.你可以在任何Web API Controller中 ...

  7. ArcGIS api for javascript——加载查询结果,悬停显示信息窗口

    转自原文 ArcGIS api for javascript——加载查询结果,悬停显示信息窗口 描述 本例在开始和地图交互前执行一个查询任务并加在查询结果.这允许用户鼠标悬停在任意郡县时立即见到Inf ...

  8. Lucene系列六:Lucene搜索详解(Lucene搜索流程详解、搜索核心API详解、基本查询详解、QueryParser详解)

    一.搜索流程详解 1. 先看一下Lucene的架构图 由图可知搜索的过程如下: 用户输入搜索的关键字.对关键字进行分词.根据分词结果去索引库里面找到对应的文章id.根据文章id找到对应的文章 2. L ...

  9. ABP源码分析三十六:ABP.Web.Api

    这里的内容和ABP 动态webapi没有关系.除了动态webapi,ABP必然是支持使用传统的webApi.ABP.Web.Api模块中实现了一些同意的基础功能,以方便我们创建和使用asp.net w ...

随机推荐

  1. Python 提取Twitter tweets中的元素(包括text, screen names, hashtags)

    CODE: #!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on 2014-7-1 @author: guaguastd @name: ex ...

  2. python challenge - orc.py

    http://www.pythonchallenge.com/pc/def/ocr.html recognize the characters. maybe they are in the book, ...

  3. Quartz.Net线程处理用到的两个Attribute

    1.DisallowConcurrentExecution 加到IJob实现类上,主要防止相同JobDetail并发执行. 简单来说,现在有一个实现了IJob接口的CallJob,触发器设置的时间是每 ...

  4. 递归函数, 匿名函数, yield from

    递归函数 函数执行流程 http://pythontutor.com/visualize.html#mode=edit 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 ...

  5. tomcat的安装、配置

    简单介绍 Tomcat server是一个免费的开放源码的Web 应用server,属于轻量级应用server, 在中小型系统和并发訪问用户不是非常多的场合下被普遍使用,是开发和调试JSP 程序的首选 ...

  6. CF Codeforces Round #256 (Div. 2) D (448D) Multiplication Table

    二分!!! AC代码例如以下: #include<iostream> #include<cstring> #include<cstdio> #define ll l ...

  7. Atitit.研发管理---api版本号策略与版本控制

    Atitit.研发管理---api版本号策略与版本控制 1. 1.2.1版本概述1 2. 3主版本号策略2 3. 1PATCH版本策略2 3.1. 1.2.2.1次版本号策略2 表3-1 APR中支持 ...

  8. Goole Python 风格指南 中文版

    http://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/

  9. JVM物理结构和在内存中的组织结构

    对于JVM自身的物理结构,我们可以从下图鸟瞰一下: JVM内存组成结构 JVM栈由堆.栈.本地方法栈.方法区等部分组成,结构图如下所示: 1)堆 所有通过new创建的对象的内存都在堆中分配,其大小可以 ...

  10. iOS_25_彩票骨架搭建+导航栏适配

    终于效果图: Main.storyboard 初始化的控制器是:导航控制器 它的根控制器是:TabBarController TabBarController的底部是一个自己定义的TabBar 里面加 ...