通过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查询索引结果的更多相关文章

  1. (转) 淘淘商城系列——使用SolrJ查询索引库

    http://blog.csdn.net/yerenyuan_pku/article/details/72908538 我们有必要在工程中写查询索引库的代码前先进行必要的测试.我们先到Solr服务页面 ...

  2. solrj管理索引库

    solrj管理索引库 1.1. 什么是solrJ solrj是访问Solr服务的java客户端,提供索引和搜索的请求方法,SolrJ通常在嵌入在业务系统中,通过SolrJ的API接口操作Solr服务, ...

  3. Solr系列四:Solr(solrj 、索引API 、 结构化数据导入)

    一.SolrJ介绍 1. SolrJ是什么? Solr提供的用于JAVA应用中访问solr服务API的客户端jar.在我们的应用中引入solrj: <dependency> <gro ...

  4. SolrJ查询条件组合查询实现——(十六)

    带查询条件的实现原理: 查询按钮被包在一个大表单,表单还有三个隐藏域,一个商品筛选,一个 价格,一个排序,每次点击查询时候清空三个隐藏域,就带着一个大条件去查询;点击下面的筛选条件时,给隐藏域的筛选条 ...

  5. 使用solrJ管理索引——(十四)

    a)          什么是solrJ solrj是访问Solr服务的java客户端,提供索引和搜索的请求方法,SolrJ通常在嵌入在业务系统中,通过SolrJ的API接口操作Solr服务,如下图:

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

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

  7. Solr学习笔记(3) —— SolrJ管理索引库&集群

    一.什么是SolrJ solrj是访问Solr服务的java客户端,提供索引和搜索的请求方法,SolrJ通常嵌入在业务系统中,通过SolrJ的API接口操作Solr服务,如下图: 二.SolrJ的基本 ...

  8. mysql 查询表结构 查询索引

    首先进入到mysql里 show databases; 选择数据库 use xxxcms; 查询数据库下的表结构 show create table 表名; 这样看着不太好可以后面加\G show c ...

  9. StringUtils工具类常用方法汇总2(截取、去除空白、包含、查询索引)

      在上一篇中总结了StringUtils工具类在判断字符串为空,大小写转换,移除字符或字符序列,替换,反转,切割合并等方面的方法,这次再汇总一下其它常用的方法. 一.截取   StringUtils ...

随机推荐

  1. SEO 相关知识

    传统SEO 观念 换独立服务器 加硬件 减少http请求,压缩网页体积 css 放页面顶部,js 放页面底部 一个中等规模网站的架构 技术角度 切换不同的 User-agent Chrome 的 Ne ...

  2. strcmp的实现

    注意,*str1++和*str2++最好不要写在while判断里,否则需要在return前再*str1-1,和*str2-1. int strcmp(const char *str1,const ch ...

  3. 【POJ 2243】Knight Moves

    题 Description A friend of you is doing research on the Traveling Knight Problem (TKP) where you are ...

  4. Fedora和Ubuntu下安装OpenGL开发环境配置

    Fedora下OpenGl开发环境配置 开发OpenGL工程需要3个库文件和对应的头文件: libglut.so,libGLU.so,libGL.so, gl.h ,glu.h, glut.h 这些库 ...

  5. 学习笔记 BIT(树状数组)

    痛定思痛,打算切割数据结构,于是乎直接一发BIT 树状数组能做的题目,线段树都可以解决 反之则不能,不过树状数组优势在于编码简单和速度更快 首先了解下树状数组: 树状数组是一种操作和修改时间复杂度都是 ...

  6. bzoj3037 创世纪

    两种解法: 一.树状DP /*by SilverN*/ #include<iostream> #include<algorithm> #include<cstring&g ...

  7. linux 的jdk安装

    1.1    解压上传的安装包 1.2   创建安装目录 1.3   将解压后的目录移动到安装目录 1.4    配置环境变量 修改www.qixoo.qixoo.com/etc/profile文件 ...

  8. 大数据分析与机器学习领域Python兵器谱

    http://www.thebigdata.cn/JieJueFangAn/13317.html 曾经因为NLTK的缘故开始学习Python,之后渐渐成为我工作中的第一辅助脚本语言,虽然开发语言是C/ ...

  9. SYN攻击TIME_WAIT防御。

    #! /bin/bash /bin/netstat -anput | grep TIME_WAIT >time_wait.txt /bin/cat time_wait.txt |awk '{pr ...

  10. Linux下memcache的安装和启动(转)

    memcache是高性能,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度.据说官方所说,其用户包括twitter.digg.flickr等,都是些互联网大腕呀.目前用memca ...