(六)通过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. CSDN个人空间、问答频道停站维护公告

    各位亲爱的用户:          CSDN个人空间.问答频道将于2014年11月17日18点至11月17日24点进行系统维护升级,升级期间会影响大家的正常訪问和操作.给大家带来不便.敬请广大用户谅解 ...

  2. 04-常见内存错误以及valgrind使用

    04-常见内存错误以及valgrind使用 代码段: 仅仅读数据,因此对这一部分的数据.试图写仅仅读数据,这个在编译的时候基本上能够检測. 数据段/BSS段: 未初始化直接訪问,即使没有显示初始化,仍 ...

  3. POJ3525-Most Distant Point from the Sea(二分+半平面交)

    Most Distant Point from the Sea Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 3955   ...

  4. Python 3 初探,第 2 部分: 高级主题

    Python 3 是 Guido van Rossum 功能强大的通用编程语言的最新版本.它虽然打破了与 2.x 版本的向后兼容性,但却清理了某些语法方面的问题.本文是这个由两部分组成的系列文章中的第 ...

  5. Linux-进程内存占用情况

    可以直接使用top命令后,查看%MEM的内容.可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令: (1)top top命令是Linux下常用的性能分析 ...

  6. Tony zhao:到底怎么样才叫看书?

    http://blog.jobbole.com/25842/ 目录: 一.引入 二.经历了就能理解 三.读书要分级 四.只读经典 五.别吝惜你动笔的那点时间 一.引入 看到这个题目的时候你可能会感到有 ...

  7. Mysql纯命令行添加用户及权限

    原文链接:http://hi.baidu.com/ngy1991/item/45978bd05d82c7ea785daa42 创建用户: 命令: 1 CREATE USER 'username'@'h ...

  8. event.returnvalue = false的使用

    event.returnvalue false代表不接收事件返回值 <script language="JavaScript"> //Ctrl+s保存 document ...

  9. robot.txt 文件 作用和语法

    seo工作者应该不陌生,robots.txt文件是每一个搜索引擎蜘蛛到你的网站之后要寻找和访问的第一个文件,robots.txt是你对搜索引擎制定的一个如何索引你的网站的规则.通过该文件,搜索引擎就可 ...

  10. 344. Reverse String【easy】

    344. Reverse String[easy] Write a function that takes a string as input and returns the string rever ...