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页面复杂查询.用程序实现 ...
随机推荐
- tomcat注册成服务
1>修改"bin\service.bat"文件 服务名:下图中的SERVICE_NAME 服务显示名称:下图中的DISPLAYNAME 服务描述:Description 2& ...
- osg qt 三维模型加载
osg::ref_ptr<osg::Node> OSG_Qt_::operateMatrix() { osg::ref_ptr<osg::Group> group = new ...
- VM12_pro+Ubuntu16_64+Qt5.12.2环境搭建
1.准备软件[已经存网盘] 2.安装Vm 3.安装Ubuntu 4.进入linux,修改Qt安装包权限 5.运行Qt 6.第五步会弹出Qt安装的界面,默认安装就行了 7.修改环境变量 sudo ged ...
- 性能测试-Linux资源监控⽅式
Linux资源监控⽅式 1. 命令 2. 第三⽅⼯具(nmon) 3. LR(需要安装RPC相应服务包和开启服务)(略) ⼀.命令 ⽅式 1. top (系统资源管理器) 2. vmstat (查 ...
- PAT 甲级 1040 Longest Symmetric String (25 分)(字符串最长对称字串,遍历)
1040 Longest Symmetric String (25 分) Given a string, you are supposed to output the length of the ...
- SQL Server 2008中的代码安全===主密钥
在SQL Server中的加密由层次结构形式进行处理以提供多级别的安全.SQL Server包含两个用于加密数据的密钥类型.如下图: 1.服务器主密钥(Service Master Key),位于层次 ...
- ELK之elasticsearch插件导致filebeat没有上传日志至elasticsearch解决办法
使用filebeat收集nginx发现日志为上传,elasticsearch没有日志,kibana没有展示 查看filebeat日志 日志目录为/var/log/filebeat 下面有多个日志文件 ...
- 如何使用 AWS Auto Scaling 按需动态增加和减少实例
目录 一.背景需求 二.配置步骤 2.1.创建 AMI 2.2.创建负载均衡目标组 2.3.创建 Classic Load Balancer 2.4.创建启动配置 2.5.创建 Auto Scalin ...
- wordpress通过$wpdp更新数据表内容
如下面的代码 更新id为1的数据 table 指的是要更新的数据表 第一个数组 array( 'column1' => 'value1', 'column2' => 'value2' ) ...
- WordPress主题制作:基础样式文件
1.style.css文件,其中必须包含 /* Theme Name:主题名称 Theme URI: 主题链接 Version: 版本 Description: 主题简介 Author: 主题作者 A ...