千家信息网

solr4.7高亮显示方法是什么

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章主要讲解了"solr4.7高亮显示方法是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"solr4.7高亮显示方法是什么"吧!第一种方式是s
千家信息网最后更新 2025年01月23日solr4.7高亮显示方法是什么

这篇文章主要讲解了"solr4.7高亮显示方法是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"solr4.7高亮显示方法是什么"吧!

  1. 第一种方式是solrj操作:

 public SolrDocumentList query(String str) {    SolrQuery query = new SolrQuery(str);        query.setHighlight(true);//开启高亮功能      query.addHighlightField("name,content");//高亮字段  :多个域可以用空格或者逗号分隔    query.setHighlightSimplePre("");//渲染标签      query.setHighlightSimplePost("");//渲染标签      query.setParam("f.content.hl.fragsize", "200");        QueryResponse qr=server.query(query);//执行查询      SolrDocumentList dlist=qr.getResults();          System.out.println("总数:"+dlist.getNumFound());    //第一个Map的键是文档的ID,第二个Map的键是高亮显示的字段名        Map>> map = qr.getHighlighting();        for(int i=0;i mapRe = new HashMap();     mapRe.put("id", d.get("id").toString());     if(map.get(d.get("id")).get("name") == null){      mapRe.put("name", d.getFieldValue("name").toString()+"--"+d.getFieldValue("author").toString()+"-"+d.getFieldValue("theme"));     }else{      mapRe.put("name", map.get(d.get("id")).get("name").toString()+"--"+d.getFieldValue("author").toString()+"-"+d.getFieldValue("theme"));     }     if(map.get(d.get("id")).get("content") == null){      mapRe.put("content", d.getFieldValue("content").toString().substring(0,200));     }else{      mapRe.put("content", map.get(d.get("id")).get("content").toString());     }     list.add(mapRe);    }         return list;}

2 ) 另外的方法,配置solrconfig.xml

solr是在lucene的基础上做的开发,那么在某些功能的实现上,与lucene也会有相似之处。
solr的高亮显示(包括自动摘要),是通过hl这个param,以及其相关变量来实现的,hl是hightlight的简写。lucene中是通过highlighter来操作高亮和摘要的。

配置高亮的相关属性,是在solrconfig.xml中配置的。在 下进行配置。solrconfig.xml文件中包含多个requestHandler的标签,但是只有在上述的名为search的标签中配置才有效。现将配置的案列公布如下:

                 explicit       10       text        true        content        50        <font color="red>        </font>       

其中,hl是指定是否使用高亮;hl.fl,指定对哪些域进行高亮,对多个域进行高亮的话,好像是用逗号隔开;f.name.hl.fragsize是指摘要的长度,默认0代表不做摘要。而hl.simple.pre和hl.simple.post则是指定高亮时显示的格式,默认是。详细内容请参见:http://wiki.apache.org/solr/HighlightingParameters。设置完成后,

在solrj中,通过QueryResponse对象的getHighlighting()方法获得。该方法返回 Map>>类型的数据。其中第一个Map中的key是id,第二个Map中的key是field,List中封装的就是高亮与摘要处理过后的内容了


Map>> map = response.getHighlighting();

通过这个api的方法就可以得到高亮的内容,高亮的内容通过 key 跟索引的document部分关联起来

这个key就是document 的id
参数详细说明:

1.hl.fl: 用空格或逗号隔开的字段列表。要启用某个字段的highlight功能,就得保证该字段在schema中是stored。如果该参数未被给出,那么就会高亮默认字段 standard handler会用df参数,dismax字段用qf参数。你可以使用星号去方便的高亮所有字段。如果你使用了通配符,那么要考虑启用hl.requiredFieldMatch选项。
2.hl.requireFieldMatch:
如果置为true,除非该字段的查询结果不为空才会被高亮。它的默认值是false,意味着它可能匹配某个字段却高亮一个不同的字段。如果hl.fl使用了通配符,那么就要启用该参数。尽管如此,如果你的查询是all字段(可能是使用copy-field 指令),那么还是把它设为false,这样搜索结果能表明哪个字段的查询文本未被找到
3.hl.usePhraseHighlighter:
如果一个查询中含有短语(引号框起来的)那么会保证一定要完全匹配短语的才会被高亮。
4.hl.highlightMultiTerm
如果使用通配符和模糊搜索,那么会确保与通配符匹配的term会高亮。默认为false,同时hl.usePhraseHighlighter要为true。
5.hl.snippets:
这是highlighted片段的最大数。默认值为1,也几乎不会修改。如果某个特定的字段的该值被置为0(如f.allText.hl.snippets=0),这就表明该字段被禁用高亮了。你可能在hl.fl=*时会这么用。
6.hl.fragsize:
每个snippet返回的最大字符数。默认是100.如果为0,那么该字段不会被fragmented且整个字段的值会被返回。大字段时不会这么做。
7.hl.mergeContiguous:
如果被置为true,当snippet重叠时会merge起来。
8.hl.maxAnalyzedChars:
会搜索高亮的最大字符,默认值为51200,如果你想禁用,设为-1
9.hl.alternateField:
如果没有生成snippet(没有terms 匹配),那么使用另一个字段值作为返回。
10.hl.maxAlternateFieldLength:
如果hl.alternateField启用,则有时需要制定alternateField的最大字符长度,默认0是即没有限制。所以合理的值是应该为:hl.snippets * hl.fragsize这样返回结果的大小就能保持一致。
12.hl.formatter:一个提供可替换的formatting算法的扩展点。默认值是simple,这是目前仅有的选项。显然这不够用,你可以看看org.apache.solr.highlight.HtmlFormatter.java 和 solrconfig.xml中highlighting元素是如何配置的。
注意在不论原文中被高亮了什么值的情况下,如预先已存在的em tags,也不会被转义,所以在有时会导致假的高亮。
13.hl.fragmenter:
这个是solr制定fragment算法的扩展点。gap是默认值。regex是另一种选项,这种选项指明highlight的边界由一个正则表达式确定。这是一种非典型的高级选项。为了知道默认设置和fragmenters (and formatters)是如何配置的,可以看看solrconfig.xml中的highlight段。
regex 的fragmenter有如下选项:
14.hl.regex.pattern:正则表达式的pattern
15.hl.regex.slop:这是hl.fragsize能变化以适应正则表达式的因子。默认值是0.6,意思是如果hl.fragsize=100那么fragment的大小会从40-160.

感谢各位的阅读,以上就是"solr4.7高亮显示方法是什么"的内容了,经过本文的学习后,相信大家对solr4.7高亮显示方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

高亮 字段 方法 配置 内容 参数 摘要 查询 最大 标签 这是 通配符 功能 多个 字符 就是 正则 结果 表达式 逗号 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中控考勤软件数据库字母 软件开发数据开发 软件开发只要学java吗 数据库表字段名可以用中文吗 管道项目组责任制软件开发 部落联盟平衡的服务器 智阳网络技术有限公司运营部 jupyter 操作数据库 缺乏网络安全专业型人才 网络安全王标 网络安全教育手操报内容 深圳市尊信网络技术有限公司 个人信用数据库的核心 网络安全性应该设置成什么 软件开发用什么处理器好 留言评论功能的数据库设计 用cmd 登录plsql数据库 完善信用信息基础数据库 观网络安全系列课堂有感征文 我的世界混乱服务器教程 服务器到期镜像可以保留多长时间 phpstudy运行数据库 无锡定制软件开发报价 成都宅萌互联网科技有限公司 数据库索引的建立的一般性原则 手机网络安全哪个软件好 申请网络安全经费的报告 怎么学sql数据库 服务器里怎么下载材质包 电子政务内网网络安全工作总结
0