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)); }
扫描公众号,关注更多信息
---------------------------------------------------------------------------------我是分割线--------------------------------------------------------------------------to be a better me, talk is cheap show me the code
版权所有,转载请注明原文链接。
文中有不妥或者错误的地方还望指出,以免误人子弟。如果觉得本文对你有所帮助不妨【推荐】一下!如果你有更好的建议,可以给我留言讨论,共同进步!
再次感谢您耐心的读完本篇文章。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
分类:
java
标签:
solr_lucence
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?