查询时的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中包含着高亮的内容

最新文章

  1. unison+inotify-tools触发式双向自动同步
  2. Apache+PHP配置运行环境(getenv的使用)
  3. C++之路起航——标准模板库(queue)
  4. div+css基础
  5. careercup-高等难度 18.6
  6. SSDT – Error SQL70001 This statement is not recognized in this context-摘自网络
  7. JSON.parse和JSON.stringify 参数详解
  8. ASP.NET基于donetCHARTING的自动报表
  9. Filter学习
  10. 微信开发之获取jsapi_ticket
  11. JavaScript预处理
  12. FreeRTOS如何结束和重新启动调度程序
  13. JDK源码中使用的设计模式
  14. PPP中的PAP和CHAP的区别
  15. python第三十六天-----类中的特殊成员方法
  16. 10.Django用户认证组件
  17. el-cascader 级联选择器使用时遇到的一些问题
  18. spring batch批处理框架学习
  19. 【译】第三篇 SQL Server代理警报和操作员
  20. C为什么不能跨平台

热门文章

  1. 洛谷 P2025 脑力大人之监听电话
  2. Hypervisor scheduler
  3. [React Intl] Format a Date Relative to the Current Date Using react-intl FormattedRelative
  4. [AngularFire 2] Object Observables - How to Read Objects from a Firebase Database?
  5. ECMAScript5和ECMAScript6_浏览器支持情况
  6. 9、基于Linux的v4l2视频架构应用编写
  7. Java的压缩、解压及压缩加密、解密解压 样例
  8. Linux 系统 杀Oracle 进程
  9. java数组10大技巧
  10. Ditto —— windows 剪贴板增强小工具(复制粘贴多条记录)