springMVC.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.2.xsd"> <!-- 配置扫描 器 -->
<context:component-scan base-package="com.itheima.jd"/>
<!-- 配置处理器映射器 适配器 -->
<mvc:annotation-driven/> <!-- 配置视图解释器 jsp -->
<bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!-- 配置SolrServer对象 -->
<bean id="solrServer" class="org.apache.solr.client.solrj.impl.HttpSolrServer">
<constructor-arg index="0" value="http://localhost:8080/solr/collection1"/>
</bean> </beans>

SearchDaoImpl:

@Repository
public class SearchDaoImpl implements SearchDao { @Autowired
private SolrServer solrServer; @Override
public SearchResult search(SolrQuery query) throws Exception {
// 1)根据Query对象进行查询
QueryResponse response = solrServer.query(query);
// 2)得到查询结果
SolrDocumentList solrDocumentList = response.getResults();
// 3)取查询结果的总记录数
long numFound = solrDocumentList.getNumFound();
// 4)取商品列表,包含高亮的结果
List<Product> products = new ArrayList<>();
//取高亮显示的结果
Map<String, Map<String, List<String>>> highlighting = response.getHighlighting();
for (SolrDocument solrDocument : solrDocumentList) {
//创建一个Product对象
Product product = new Product();
product.setPid((String) solrDocument.get("id"));
product.setCatalog_name((String) solrDocument.get("product_catalog_name"));
//取高亮结果
List<String> list = highlighting.get(solrDocument.get("id")).get("product_name");
String productName = "";
if (list != null && list.size() > 0) {
productName = list.get(0);
} else {
productName = (String) solrDocument.get("product_name");
}
product.setName(productName);
product.setPicture((String) solrDocument.get("product_picture"));
product.setPrice((float) solrDocument.get("product_price"));
//添加到商品列表
products.add(product);
}
// 5)把结果封装到SearchResult对象中
SearchResult result = new SearchResult();
result.setRecordCount(numFound);
result.setProductList(products);
// 6)返回结果
return result;
} }

SearchServiceImpl:

@Service
public class SearchServiceImpl implements SearchService { @Autowired
private SearchDao searchDao; private static final int ROWS = 60; @Override
public SearchResult search(String queryString, String catalog_name, String price,
int sort, int page) throws Exception {
// 1、接收Controller传递过来的参数
// 2、创建一个SolrQuery对象
SolrQuery query = new SolrQuery();
// 3、根据参数设置查询条件。。。。
if (queryString != null && !"".equals(queryString)) {
query.setQuery(queryString);
} else {
//显示所有商品
query.setQuery("*:*");
}
//分类名称过滤条件
if (catalog_name != null && !"".equals(catalog_name)) {
query.addFilterQuery("product_catalog_name:" + catalog_name);
}
//价格区间过滤
if (price != null && !"".equals(price)) {
//取价格区间
String[] strings = price.split("-");
query.addFilterQuery("product_price:["+strings[0]+" TO "+strings[1]+"]");
}
//排序条件
//0:升序 1:降序 默认是升序
if (sort != 1) {
query.setSort("product_price", ORDER.asc);
} else {
query.setSort("product_price", ORDER.desc);
}
//设置分页信息
query.setStart((page -1) * ROWS);
query.setRows(ROWS);
//设置默认搜索域
query.set("df", "product_keywords");
//开启高亮显示
query.setHighlight(true);
query.addHighlightField("product_name");
query.setHighlightSimplePre("<em style=\"color:red\">");
query.setHighlightSimplePost("</em>");
// 4、调用dao执行查询
SearchResult searchResult = searchDao.search(query);
// 5、取查询结果
long recordCount = searchResult.getRecordCount();
// 6、计算查询结果的总页数
long pageCount = recordCount / ROWS;
if (recordCount % ROWS > 0) {
pageCount++;
}
searchResult.setPageCount(pageCount);
// 7、返回结果
return searchResult;
} }

SearchController:

@Controller
public class SearchController { @Autowired
private SearchService searchService; @RequestMapping("list")
public String search(String queryString, String catalog_name, String price,
@RequestParam(defaultValue="0")int sort, @RequestParam(defaultValue="1")int page, Model model) throws Exception {
//调用Service查询商品列表
SearchResult searchResult = searchService.search(queryString, catalog_name, price, sort, page);
//把结果传递给jsp
model.addAttribute("result", searchResult);
//查询参数回显
model.addAttribute("queryString", queryString);
model.addAttribute("catalog_name", catalog_name);
model.addAttribute("price", price);
model.addAttribute("sort", sort);
model.addAttribute("page", page);
//返回逻辑视图
return "product_list";
}
}

solr-jd的更多相关文章

  1. 在Linux环境下,将Solr部署到tomcat7中,导入Mysql数据库数据, 定时更新索引

    什么是solr solr是基于Lucene的全文搜索服务器,对Lucene进行了扩展优化. 准备工作 首先,去下载以下软件包: JDK8:jdk-8u60-linux-x64.tar.gz TOMCA ...

  2. solr 学习片段

    全文检索技术——Solr 1 主要内容 1.站内搜索技术选型 2.什么是solr Solr和lucene的区别 3.solr服务器的安装及配置 Solr整合tomcat Solr的演示 4.维护索引 ...

  3. Maven和Solr简单总结

    一.1.Maven介绍 Maven是一个项目管理工具,Maven通过POM项目对象模型,对象项目进行管理,通过一个配置文件(xml文件)进行项目的管理.对象项目的声明周期中每个阶段进行管理(清理,编译 ...

  4. solr简单搜索案例

    solr简单搜索案例 使用Solr实现电商网站中商品信息搜索功能,可以根据关键字搜索商品信息,根据商品分类.价格过滤搜索结果,也可以根据价格进行排序,实现分页. 架构分为: 1. solr服务器 2. ...

  5. 使用 Solr 创建 Core 并导入数据库数据

    1. 输入 http://localhost:8080/solr/index.html 来到 Solr 的管理界面: 2. 点击左侧 Core Admin --> Add Core,然后输入自己 ...

  6. 什么是Solr

    什么是Solr Lucene复习: 1.什么是lucene:全文检索工具包 2.Lucene的工作原理: 索引数据的创建 从原始文件中提取一些可以用来搜索的数据(封装成各种Field),把各field ...

  7. JAVAEE——Solr:安装及配置、后台管理索引库、 使用SolrJ管理索引库、仿京东的电商搜索案例实现

    1 学习回顾 1. Lucene  是Apache开源的全文检索的工具包 创建索引 查询索引 2. 遇到问题? 文件名 及文件内容  顺序扫描法  全文检索 3. 什么是全文检索? 这种先创建索引 再 ...

  8. 全文搜索技术—Solr

    1.   学习计划 1. Solr的安装及配置 a)    Solr整合tomcat b)    Solr后台管理功能介绍 c)    配置中文分析器 2. 使用Solr的后台管理索引库 a)     ...

  9. 使用solr模拟京东搜素功能

    1 项目需求 1.可以根据关键字搜索商品 2.可以根据商品的分类和价格过滤搜索结果 3.可以根据价格排序 4.可以实现基本的分页功能 2 界面效果 3 项目环境搭建 1.创建一个动态的web工程 2. ...

  10. Lucene&Solr框架之第三篇

    1.SolrCore的配置 a)schma.xml文件 b)配置中文分析器 2.配置业务域和批量索引导入 a)配置业务域 b)批量索引导入 c)Solrj复杂查询(用Query页面复杂查询.用程序实现 ...

随机推荐

  1. mysql的配置文件解释

    1 在执行mysqld命令时,下列配置会生效,即mysql服务启动时生效 [mysqld] character_set_server=utf8collation-server=utf8_general ...

  2. MacOS系统降级

    从MacOS 10.14 降级到 10.12,下载好系统镜像文件.打开,复制到Application. 准备一个至少8G的U盘,,打开磁盘工具,『抹掉』(格式化)成Mac OS扩展(日志式),名称可随 ...

  3. VS中卸载Visual Assist X

    Tools=>Extensions and updates=>找到Visual Assist X 卸载:

  4. angular 中父子路由

    1. 创建组件引入组件 import { NewsaddComponent } from './components/newsadd/newsadd.component'; import { News ...

  5. angular 中如何绑定属性

    <!--The content below is only a placeholder and can be replaced.--> <div style="text-a ...

  6. Function mysql_db_query() is deprecated 错误解决

    方法一:@ 在任何错误语句之前加上@符号,即可屏蔽! 方法二:error_reporting 在PHP文件第一行加上:error_reporting(0); 即可屏蔽! 方法三:display_err ...

  7. linux chown 命令用法

    [-cfhvR] [--help] [--version] user[:group] file  比如  chown chown root /home 把/home的属主改成root用户使用权限 : ...

  8. SpringCloud成长之路 一 注册与发现(Eureka)

    一.spring cloud简介 spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运 ...

  9. ABAP Memory ID

    转自:https://blog.csdn.net/lyq123333321/article/details/52659114 (一)          Difference Between SAP a ...

  10. 文件被sourceTree忽略了怎么办