Solr5.3.1 SolrJ查询索引结果
通过SolrJ获取Solr检索结果
1、通过SolrParams的方式提交查询参数
SolrClient solr = new HttpSolrClient("http://localhost:8080/solr/core");
Map<String, String> map = new HashMap<String, String>();
keyword = "".equals(keyword) ? "*" : keyword;
map.put("q", "search_item:" + keyword);
map.put("indent", "true");
map.put("hl", "true");
map.put("hl.fl", "title, summary");
map.put("hl.simple.pre", "<font color=\"red\">");
map.put("hl.simple.post", "</font>");
map.put("start", "0");
map.put("rows", "10");
SolrParams params = new MapSolrParams(map);
try {
QueryResponse resp = solr.query(params);
Map<String, Map<String, java.util.List<String>>> highlight = resp.getHighlighting();//高亮集合
SolrDocumentList docsList = resp.getResults();//文档集合
int docNumFound = (int) docsList.getNumFound();//文档数
ArrayList<Map<String, String>> list = new ArrayList<Map<String, String>>();
String key = "";
Map<String, String> docMap;
for (SolrDocument doc : docsList) {
docMap = new HashMap<String, String>();
key = doc.get("id").toString();
if(key != null && highlight.get(key) != null){
docMap.put("id", key);
docMap.put("type", doc.get("type").toString());
String title = (String) (!"*".equals(keyword) && highlight.get(key).get("title") != null ? highlight.get(key).get("title").get(0) : doc.get("title"));
docMap.put("title", title);
String summary = (String) (!"*".equals(keyword) && highlight.get(key).get("summary") != null ? highlight.get(key).get("summary").get(0) : doc.get("summary"));
docMap.put("summary", summary);
}
list.add(docMap);
}
solr.close();
} catch (Exception e) {
e.printStackTrace();
}finally{
if (solr != null) {
try {
solr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
2、通过SolrQuery提交参数
SolrClient solr = new HttpSolrClient("http://localhost:8080/solr/core");
SolrQuery query = new SolrQuery();
//设置高亮
query.setQuery("name:datou");
query.setHighlight(true); // 开启高亮组件或用query.setParam("hl", "true");
query.addHighlightField("name");// 高亮字段
query.setHighlightSimplePre("<font color='red'>");//标记,高亮关键字前缀
query.setHighlightSimplePost("</font>");//后缀
// query.setHighlightSnippets(1);//结果分片数,默认为1
// query.setHighlightFragsize(1000);//每个分片的最大长度,默认为100
System.out.println(query);//用于调试程序
QueryResponse rsp = solr.query(query);
NamedList list = (NamedList) rsp.getResponse().get("highlighting");
System.out.println(list);//用于显示list中的值
for (int i = 0; i < list.size(); i++){
System.out.println("id=" + list.getName(i) + "文档中高亮显示的字段:" + list.getVal(i));
}
Solr5.3.1 SolrJ查询索引结果的更多相关文章
- (转) 淘淘商城系列——使用SolrJ查询索引库
http://blog.csdn.net/yerenyuan_pku/article/details/72908538 我们有必要在工程中写查询索引库的代码前先进行必要的测试.我们先到Solr服务页面 ...
- solrj管理索引库
solrj管理索引库 1.1. 什么是solrJ solrj是访问Solr服务的java客户端,提供索引和搜索的请求方法,SolrJ通常在嵌入在业务系统中,通过SolrJ的API接口操作Solr服务, ...
- Solr系列四:Solr(solrj 、索引API 、 结构化数据导入)
一.SolrJ介绍 1. SolrJ是什么? Solr提供的用于JAVA应用中访问solr服务API的客户端jar.在我们的应用中引入solrj: <dependency> <gro ...
- SolrJ查询条件组合查询实现——(十六)
带查询条件的实现原理: 查询按钮被包在一个大表单,表单还有三个隐藏域,一个商品筛选,一个 价格,一个排序,每次点击查询时候清空三个隐藏域,就带着一个大条件去查询;点击下面的筛选条件时,给隐藏域的筛选条 ...
- 使用solrJ管理索引——(十四)
a) 什么是solrJ solrj是访问Solr服务的java客户端,提供索引和搜索的请求方法,SolrJ通常在嵌入在业务系统中,通过SolrJ的API接口操作Solr服务,如下图:
- JAVAEE——Solr:安装及配置、后台管理索引库、 使用SolrJ管理索引库、仿京东的电商搜索案例实现
1 学习回顾 1. Lucene 是Apache开源的全文检索的工具包 创建索引 查询索引 2. 遇到问题? 文件名 及文件内容 顺序扫描法 全文检索 3. 什么是全文检索? 这种先创建索引 再 ...
- Solr学习笔记(3) —— SolrJ管理索引库&集群
一.什么是SolrJ solrj是访问Solr服务的java客户端,提供索引和搜索的请求方法,SolrJ通常嵌入在业务系统中,通过SolrJ的API接口操作Solr服务,如下图: 二.SolrJ的基本 ...
- mysql 查询表结构 查询索引
首先进入到mysql里 show databases; 选择数据库 use xxxcms; 查询数据库下的表结构 show create table 表名; 这样看着不太好可以后面加\G show c ...
- StringUtils工具类常用方法汇总2(截取、去除空白、包含、查询索引)
在上一篇中总结了StringUtils工具类在判断字符串为空,大小写转换,移除字符或字符序列,替换,反转,切割合并等方面的方法,这次再汇总一下其它常用的方法. 一.截取 StringUtils ...
随机推荐
- zabbix_监控_端口
目的:监控web主机80端口是否在供提服务.如果不在发出报警.配置: 1.添加监控项(Items). 打开zabbix web管理界面:选择"Configurat ...
- NOI2005维修数列 splay
好题,错了不知道多少遍.这题其他几个操作都是比较经典的,多了一个最大子序列的.这时候对于当前的区间,最大子序列,可能使左区间的最值,可能是右区间的最值,也可能是整个区间的.所以维护lx[],rx[], ...
- shell expr的用法
root@tcx4440-03:~# var=$var+1root@tcx4440-03:~# echo $var3+1 要想达到预期结果,用下列三种方法: (1)let "var+=1&q ...
- 【Gym 100685J】Just Another Disney Problem(交互/排序)
第一次做交互题. 题意是有n个数(n<1000),你通过问1 a b,后台返回你YES代表a<b,NO代表a>b.要你在10000次询问内给出一个符合的排列.n=1000来说,100 ...
- 【CodeForces 471A】MUH and Sticks
题 题意 给你六根木棍的长度,熊需要头比身体短,大象需要头和身体一样,四肢要一样长,否则就是外星人.请你判断能组成哪一个. 分析 暴力,循环看一下每根有几根相同的,然后如果有四根都是有四根相同的&am ...
- RHCS
简介 Red Hat Cluster Suite :红帽子集群套件 高可用性.高可靠性.负载均衡.存储共享 高可用集群是 RHCS 的核心功能.当应用程序出现故障,或者系统硬件. 网络出现故障时,应用 ...
- XCode新建Class时自动加前缀(class prefix 修改前缀)
已经建好的工程,怎么修改class prefix.如图,怎么修改下面的前缀LP,我想改为其他的,比如SH 解决方法: 1.点开Xcode右侧Utilities,Project Document-> ...
- POJ2531Network Saboteur(DFS+剪枝)
Network Saboteur Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 10391 Accepted: 4990 ...
- HBase概念学习(十)HBase与MongDB等NoSQL数据库对照
转载请注明出处: jiq•钦's technical Blog - 季义钦 一.开篇 淘宝之前使用的存储层架构一直是MySQL数据库,配合以MongDB,Tair等存储. MySQL因为开源,而且生态 ...
- resharper安装后,一不小心点错了(选择了object browser)
打开Resharper,选择Options,然后选择Tools中的External Sources,你的情况是选择了Navigation to Object Brower这一项了,换成第一个Defau ...