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中,并给部分字段建立索引, ...
随机推荐
- C# exe文件 添加到windows 服务
我们运行.net的发布工具installutil.exe来添加到windows服务里面(该工具默认在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727目录下) ...
- js中#代表什么
js中#代表什么 一.总结 1.#号:代表id选择器 2. $('#div1'). : 常用用法,前面也有$符号 二."#"在js中代表什么 js里我不曾看到用到‘#’的代码端, ...
- amazeui学习笔记--css(常用组件16)--文章页Article
amazeui学习笔记--css(常用组件16)--文章页Article 一.总结 1.基本使用:文章内容页的排版样式,包括标题.文章元信息.分隔线等样式. .am-article 文章内容容器 .a ...
- fatfs输出目录
利用fatfs文件系统, 如何输出SD卡根目录下的各个文件夹名字呢? 程序如下: u8 Dirname_i; u8 Dirname_j; DIR dir; //读取txt里的目录用,还是要把fatfs ...
- JQ实现选项卡(jQuery原型插件扩展)
下边分为两个版本,一种是点击切换选项(index.js),一种是滑过切换选项(index1.js) HTML文件: jq使用jquery-1.11.3.js版本 <!DOCTYPE html&g ...
- (转)30 IMP-00019: row rejected due to ORACLE error 12899
IMP: row rejected due IMP: ORACLE error encountered ORA: value too large , maximum: )导入日志报 IMP: 由于 O ...
- 鲁德http://www.testroad.org/topic/76
[最新的招聘信息]:1.联动优势科技有限公司招聘性能测试工程师 薪资20K左右 http://ask.testroad.org/article/4042.上海-交通银行总行-性能测试专家 ...
- Linux 内核源代码分析 chap 2 存储管理 (5)
物理页面分配 linux 内核 2.4 中有 2 个版本号的物理页面分配函数 alloc_pages(). 一个在 mm/numa.c 中, 还有一个在 mm/page_alloc.c 中, 依据条件 ...
- 切换根控制器UIApplication 主屏幕UIScreen 读取文件资源NSBundle
//主屏幕设为webView CGRect frame = [UIScreen mainScreen].applicationFrame; UIWebView *webView = [[[UIWebV ...
- 使用UIDataDetectorTypes自己主动检測电话、网址和邮箱
支付宝公布最新版本号9.0.再一次引发一场撕逼大战.微信说支付宝抄袭了它.支付宝说微信一直都在抄袭自己.在我看来.微信和支付宝都抄袭了对方.对于大佬们的抄袭.我们也是司空见惯了. 支付宝这一次更新,真 ...