您的位置:首页 > 其它

solrj 高亮显示

2015-06-16 18:25 483 查看
版本solr-4.10.1中,不用配置文件设置高亮,而用solrj设置高亮。注意高亮的字段field必须设置storeOffsetsWithPositions="true",否则高亮异常:field
'dkeys' was indexed without offsets, cannot highlight。

很多老代码都是这么写,结论是:设置的css样式无效,默认成了<em></em>样式,高亮效果是字体斜体。

[java] view
plaincopy





params.add(HighlightParams.FIELDS, hls);  

params.set(HighlightParams.HIGHLIGHT, true);  

      params.set(HighlightParams.SIMPLE_PRE, "<font color=\'red\'");或者red不用加单引号其实就可以不需要转义  

      params.set(HighlightParams.SIMPLE_POST, "</font>");  

查了solrj官方资料这么写的:

[html] view
plaincopy





hl.simple.pre/hl.simple.post  

  

The text which appears before and after a highlighted term when using the simple formatter. This parameter accepts per-field overrides.  

  

The default values are "<em>" and "</em>" This parameter makes sense for the original Highlighter only. Use hl.tag.pre and hl.tag.post for FastVectorHighlighter (see example under hl.fragmentsBuilder)  

This parameter makes sense for the original Highlighter only.



后来改成这样的代码,则设置的高亮效果有效:

[java] view
plaincopy





params.add(HighlightParams.FIELDS, hls);  

            params.set(HighlightParams.HIGHLIGHT, true);  

            params.set(HighlightParams.SNIPPETS, snippets);  

            params.set(HighlightParams.TAG_PRE, "<font color=\'red\'>");  

            params.set(HighlightParams.TAG_POST, "</font>");  

结果显示代码:

[java] view
plaincopy





Map<String,Map<String,List<String>>> hl = response.getHighlighting();  

        //循环匹配title领域高亮集合  

  

        SolrDocumentList list = response.getResults();   

        for(SolrDocument sd : list){  

            System.out.println("-------------------------------------------");  

            List<String> highightSnippets = hl.get(sd.getFieldValue("id")).get("title");  

            if(highightSnippets != null){  

            for(int k =0 ; k < highightSnippets.size() ;k++){  

                    String temp = highightSnippets.get(k);  

                    System.out.println("title高亮返回为:"  + temp);  

                }  

            }   

}  

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  solr