1 4 package org.javabb.lucene.search; 5 6 7 import java.util.Iterator ; 8 import java.util.Map ; 9 10 import org.apache.lucene.search.highlight.Formatter; 11 import org.apache.lucene.search.highlight.TokenGroup; 12 13 14 27 public class CSSFormatter implements Formatter { 28 29 private String cssClass; 30 31 private String cssStyle; 32 33 36 public CSSFormatter ( String cssClass ) { 37 38 this.cssClass = cssClass; 39 40 } 41 42 45 public CSSFormatter ( Map properties ) { 46 47 cssStyle = constructStyle(properties); 48 49 } 50 51 54 public String highlightTerm( String originalText, TokenGroup tokenGroup ) { 55 56 if (tokenGroup.getTotalScore() > 0) { 57 58 return doHighlightTerm(originalText); 59 60 } 61 62 return originalText; 63 64 } 65 66 private String doHighlightTerm( String originalText ) { 67 68 StringBuffer buffer = new StringBuffer (); 69 70 if ((cssClass != null) && !cssClass.trim().equals("")) { 71 72 buffer.append("<span class=\"").append(cssClass).append("\">"); 73 buffer.append(originalText); 74 buffer.append("</span>"); 75 76 } else { 77 78 buffer.append("<span style=\"").append(cssStyle).append("\">"); 79 buffer.append(originalText); 80 buffer.append("</span>"); 81 82 } 83 84 return buffer.toString(); 85 86 } 87 88 private String constructStyle( Map cssProperties ) { 89 90 StringBuffer buffer = new StringBuffer (); 91 Iterator iterator = cssProperties.entrySet().iterator(); 92 93 while (iterator.hasNext()) { 94 95 Map.Entry entry = (Map.Entry ) iterator.next(); 96 97 buffer.append(entry.getKey()).append(":"); 98 buffer.append(entry.getValue()).append(";"); 99 100 } 101 102 return buffer.toString(); 103 104 } 105 106 } 107 | Popular Tags |