solr-jd

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的更多相关文章
- 在Linux环境下,将Solr部署到tomcat7中,导入Mysql数据库数据, 定时更新索引
什么是solr solr是基于Lucene的全文搜索服务器,对Lucene进行了扩展优化. 准备工作 首先,去下载以下软件包: JDK8:jdk-8u60-linux-x64.tar.gz TOMCA ...
- solr 学习片段
全文检索技术——Solr 1 主要内容 1.站内搜索技术选型 2.什么是solr Solr和lucene的区别 3.solr服务器的安装及配置 Solr整合tomcat Solr的演示 4.维护索引 ...
- Maven和Solr简单总结
一.1.Maven介绍 Maven是一个项目管理工具,Maven通过POM项目对象模型,对象项目进行管理,通过一个配置文件(xml文件)进行项目的管理.对象项目的声明周期中每个阶段进行管理(清理,编译 ...
- solr简单搜索案例
solr简单搜索案例 使用Solr实现电商网站中商品信息搜索功能,可以根据关键字搜索商品信息,根据商品分类.价格过滤搜索结果,也可以根据价格进行排序,实现分页. 架构分为: 1. solr服务器 2. ...
- 使用 Solr 创建 Core 并导入数据库数据
1. 输入 http://localhost:8080/solr/index.html 来到 Solr 的管理界面: 2. 点击左侧 Core Admin --> Add Core,然后输入自己 ...
- 什么是Solr
什么是Solr Lucene复习: 1.什么是lucene:全文检索工具包 2.Lucene的工作原理: 索引数据的创建 从原始文件中提取一些可以用来搜索的数据(封装成各种Field),把各field ...
- JAVAEE——Solr:安装及配置、后台管理索引库、 使用SolrJ管理索引库、仿京东的电商搜索案例实现
1 学习回顾 1. Lucene 是Apache开源的全文检索的工具包 创建索引 查询索引 2. 遇到问题? 文件名 及文件内容 顺序扫描法 全文检索 3. 什么是全文检索? 这种先创建索引 再 ...
- 全文搜索技术—Solr
1. 学习计划 1. Solr的安装及配置 a) Solr整合tomcat b) Solr后台管理功能介绍 c) 配置中文分析器 2. 使用Solr的后台管理索引库 a) ...
- 使用solr模拟京东搜素功能
1 项目需求 1.可以根据关键字搜索商品 2.可以根据商品的分类和价格过滤搜索结果 3.可以根据价格排序 4.可以实现基本的分页功能 2 界面效果 3 项目环境搭建 1.创建一个动态的web工程 2. ...
- Lucene&Solr框架之第三篇
1.SolrCore的配置 a)schma.xml文件 b)配置中文分析器 2.配置业务域和批量索引导入 a)配置业务域 b)批量索引导入 c)Solrj复杂查询(用Query页面复杂查询.用程序实现 ...
随机推荐
- python pip 安装插件权限问题及 指定pip国内镜像源
- matlab中x.^2与x^2有什么区别?
.^2是矩阵中的每个元素都求平方,^2是求矩阵的平方或两个相同的矩阵相乘,因此要求矩阵为方阵,且看下面的例子x=1:4x = 1 2 3 4 x.^2 ans = 1 4 9 16 x^2 Error ...
- SpringBoot视图层技术
一.SpringBoot整合jsp 在maven的dependencies的依赖中除了springBoot启动器还要添加对jstl和jsp的依赖. <dependencies> <d ...
- vue 实现返回上一页不请求数据keep-alive
常规操作: 我们通常会将通过接口请求数据的方法放在==created== 或者 ==mounted==这两个生命周期中的一个里面调用. 但是我们知道,不管是我们刚进入这个页面还是从其他页面返回这个页面 ...
- Pytho之Django
Django工程目录讲解: manage.py脚本:用于管理Django站点 settings.py: 包含项目的所有配置参数 urls.py: URL根配置 wsgi.py: 内置runserver ...
- 002-01-RestTemplate-配置使用说明
一.概述 Spring RestTemplate 是 Spring 提供的用于访问 Rest 服务的客户端,RestTemplate 提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写 ...
- 随机数据构造-Faker
from faker import Faker # fake = Faker() #本地化处理 fake = Faker('zh_CN') # print(fake.name()) # print(f ...
- 【408】C函数中的ADT
类似类的形式 boardADT.h:所有的宏.声明等部分写在这里 boardADT.c:只需要 #inclue "boardADT.h",不需要 include 其他系统头文件,然 ...
- OO ALV事件里使用E消息,下一步会退出到系统初始界面
在OO ALV data_change事件时(选中行),锁定KEY值, 继续,取消选择,退出到系统初始界面 改成 pv_status = 'E'. pv_msg = '采购订单' && ...
- Python - Django - 添加作者
在 book_list.html 的页面下方加上 “添加作者” 的链接 <!DOCTYPE html> <html lang="en"> <head& ...