solrj 高亮顯示

版本solr-4.10.1中,不用配置文件設置高亮,而用solrj設置高亮。注意高亮的字段field必須設置storeOffsetsWithPositions="true"否則高亮異常:field 'dkeys' was indexed without offsets, cannot highlight。

很多老代碼都是這麼寫,結論是:設置的css樣式無效,默認成了<em></em>樣式,高亮效果是字體斜體。

[java] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. params.add(HighlightParams.FIELDS, hls);  
  2. params.set(HighlightParams.HIGHLIGHT, true);  
  3.       params.set(HighlightParams.SIMPLE_PRE, "<font color=\'red\'");或者red不用加單引號其實就可以不需要轉義  
  4.       params.set(HighlightParams.SIMPLE_POST, "</font>");  

查了solrj官方資料這麼寫的:

[html] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. hl.simple.pre/hl.simple.post  
  2.   
  3. The text which appears before and after a highlighted term when using the simple formatter. This parameter accepts per-field overrides.  
  4.   
  5. 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在CODE上查看代碼片派生到我的代碼片
  1. params.add(HighlightParams.FIELDS, hls);  
  2.             params.set(HighlightParams.HIGHLIGHT, true);  
  3.             params.set(HighlightParams.SNIPPETS, snippets);  
  4.             params.set(HighlightParams.TAG_PRE, "<font color=\'red\'>");  
  5.             params.set(HighlightParams.TAG_POST, "</font>");  

結果顯示代碼:

[java] view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. Map<String,Map<String,List<String>>> hl = response.getHighlighting();  
  2.         //循環匹配title領域高亮集合  
  3.   
  4.         SolrDocumentList list = response.getResults();   
  5.         for(SolrDocument sd : list){  
  6.             System.out.println("-------------------------------------------");  
  7.             List<String> highightSnippets = hl.get(sd.getFieldValue("id")).get("title");  
  8.             if(highightSnippets != null){  
  9.             for(int k =0 ; k < highightSnippets.size() ;k++){  
  10.                     String temp = highightSnippets.get(k);  
  11.                     System.out.println("title高亮返回爲:"  + temp);  
  12.                 }  
  13.             }   
  14. }  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章