solr 7.x 查询及高亮
查询时的api分为两种一种是万能的set,还有一种是setxxxquery
@Test
public void search2() throws Exception{
HttpSolrClient solrClient = new HttpSolrClient.Builder("http://127.0.0.1:8080/solr/solrcore1").build();
SolrQuery query = new SolrQuery();
query.set("q","test001"); //1.过滤器
query.set("fq","pprice:[1 TO 100]");//query.setFilterQueries("pprice:[1 TO 100]");也可以用addFiterQuries设置多过滤条件 //2.排序
query.set("sort","pprice desc,id asc");//query.setSort("pprice",ORDER.desc); addSort //3.设置查询到的文档返回的域对象
query.set("fl","id,pname,pprice");//query.setFields("id,pname"); //4.设置默认查询的域
query.set("df","pname"); //5.分页
query.set("start",0); //query.setStart(0)
query.set("rows",5); //query.setRows(5) //6.高亮
query.set("hl",true);
//设置高亮域(设置的域必须在查询条件中存在)
query.set("h1.fl","pname","pprice");
//前缀
query.set("hl.simple.pre","<em style='color:red'>");
//后缀
query.set("hl.simple.post","</em>"); /*query.setHighlight(true);
query.addHighlightField("pname");
query.setHighlightSimplePre("<em style='color:red'>");
query.setHighlightSimplePost("</em>");*/ QueryResponse response = solrClient.query(query);
SolrDocumentList results = response.getResults();
//k是id,内部的map的key是域名,其value是高亮的值集合
Map<String, Map<String, List<String>>> highlighting = response.getHighlighting();
System.out.println("匹配的结果总数是-------"+results.getNumFound());
for(SolrDocument document:results) {
System.out.println("id----" + document.get("id"));
System.out.println("pname-----" + document.get("pname"));
System.out.println("pprice------" + document.get("pprice"));
List<String> list = null;
if(highlighting.get(document.get("id")) != null) {
list = highlighting.get(document.get("id")).get("pname");
}else {
System.out.println("无法获取高亮map");
} if (list != null && list.size() > 0) {
System.out.println("高亮显示的内容:----"+list.get(0));
}else {
System.out.println("高亮显示的内容为空!!!");
}
System.out.println("=========================");
}
}
可以看到查询时用的set(xxx)与solrAdmin页面的查询界面想对应

关于高亮:
1.首先高亮的域必须出现在查询条件中,如果你设置了返回域,请把要高亮的域对象包含其中
2.高亮的域对象必须在solrconfig中必须设置其stored为true
3.高亮的数据结构如下图所示

可以看到是map中镶嵌着map,外层map的key是匹配到的document对象的id,其value是一个map,这个map的key才是设置的高亮的域对象名称,value中包含着高亮的内容
solr 7.x 查询及高亮的更多相关文章
- Solr 08 - 在Solr Web管理页面中查询索引数据 (Solr中各类查询参数的使用方法)
目录 1 Solr管理页面的查询入口 2 Solr查询输入框简介 3 Solr管理页面的查询方案 1 Solr管理页面的查询入口 选中需要查询的SolrCore, 然后在菜单栏选择[Query]: 2 ...
- Lucene7.2.1系列(三)查询及高亮
系列文章: Lucene系列(一)快速入门 Lucene系列(二)luke使用及索引文档的基本操作 Lucene系列(三)查询及高亮 一 准备 创建项目并添加Maven依赖 <dependenc ...
- Solr实战:使用Hue+Solr实现标签查询
公司最近在研究多条件组合查询方案,Google的一位技术专家Sam和我们讨论了几个备选方案. Sam的信: 我做了进一步研究,目前有这么几种做法: 1) 最直接粗暴,只做一个主index,比如按行业+ ...
- Solr与MySQL查询性能对比
本文简单对比下Solr与MySQL的查询性能速度. 测试数据量:10407608 Num Docs: 10407608 这里对MySQL的查询时间都包含了从MySQL Server获取数据的时 ...
- Solr学习笔记——查询
1.进入Solr管理界面http://localhost:8983/solr/ 可以看到Query中有若干的参数,其意义如下(参考:http://www.jianshu.com/p/3c4cae5de ...
- Solr记录-solr检索和查询数据
Solr检索数据 在本章中,我们将讨论如何使用Java Client API检索数据.假设有一个名为sample.csv的.csv文档,其中包含以下内容. 001,9848022337,Hyderab ...
- solr之~模糊查询
有的时候,我们一开始不可能准确地知道搜索的关键字在 Solr 中查询出的结果是什么,因此,Solr 还提供了几种类型的模糊查询.模糊匹配会在索引中对关键字进行非精确匹配.例如,有的人可能想要搜索某个前 ...
- solr :term 查询, phrase查询, boolean 查询
搜索总体有:term 查询, phrase查询, boolean 查询 1. SOLR搜索覆盖度和准确度保证的三个搜索方式: 保证准确率: AND: Search for two different ...
- solr的多条件组合查询和solr的范围查询【转】
solr的多条件组合查询和solr的范围查询 版权声明:本文为博主原创文章,供大家参考,但不要抄袭哦! 存在问题:为了减轻数据库的访问压力,往往我们将必要的数据存储到solr中,并给部分字段建立索引, ...
随机推荐
- elementUI upload 对图片的宽高做校验
很开心今天中午没有吃饭!原因是一直没有解决掉一个小问题,于是一直试错,最后看了下源码才有了点头绪,历时四五个小时才解决掉,有点怀疑自己的能力了,所以写下此文,记录一下今天的囧况!一般情况下遇到问题,自 ...
- loadrunne-- Analysis 分析器
本文转自:https://www.cnblogs.com/Chilam007/p/6445165.html Analysis简介 分析器就是对测试结果数据进行分析的组件,它是LR三大组件之一,保存着大 ...
- Oracle 排序问题(null带来的)
null 导致排序有问题, 对于数字的,一定要用nvl来解决.
- Leetcode之Best Time to Buy and Sell Stock
Say you have an array for which the ith element is the price of a given stock on day i. If you were ...
- 想在子线程里面触发的信号的槽函数在子线程执行,信号槽连接必须使用DirectConnection 方式(即使跨线程,也可以强迫DirectConnection,而不能是AutoConnection)
Qt多线程的实现 1.继承QThread,重新run 2.继承Object,调用moveToThread方法 两种方法各有利弊:主要参考:http://blog.51cto.com/9291927/1 ...
- v-if和updated钩子结合使用 渲染echart图表
项目需求是这样的,用户可以自定选择echart 曲线图 是横向还是竖向显示.我的做法是 写了一个横向的echart图表,也写了一个竖向的echart图表,然后两者共用存在store里的图表数据,就能实 ...
- ftp 下载时防止从缓存中获取文件
//http://baike.baidu.com/link?url=QucJiA_Fg_-rJI9D4G4Z4687HG4CfhtmBUd5TlXrcWCeIEXCZxIh0TD7ng1wROAzAu ...
- 【习题 3-3 UVA-1225】Digit Counting
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 水模拟 [代码] #include <bits/stdc++.h> using namespace std; int a ...
- The behavior of App killed or restored by Android System or by users
What's the behavior of App killed or restored by Android System or by users? First, user kills the a ...
- 用Java将字符串的首字母转换大小写
在项目开发的时候会需要统一字符串的格式,比如首字母要求统一大写或小写,那用Java如何实现这一功能?下面一起来学习学习. 话不多说,直接上代码 ? 1 2 3 4 5 6 7 8 9 10 11 12 ...