修改highlighter解决思路

修改highlighter
改写highlighter,得到含有关键词的片段,使关键字居中,同时记录关键词、左词语、右词语的位置信息 怎么修改 请大家指导

------解决方案--------------------
引用楼主 selg1984 的帖子:
改写highlighter,得到含有关键词的片段,使关键字居中,同时记录关键词、左词语、右词语的位置信息 怎么修改 请大家指导

------解决方案--------------------
探讨
是啊 你会不

------解决方案--------------------
lucene自己有高亮显示的样例的,我发给你个实例吧:

Java code
                // 高亮处理。
                SimpleHTMLFormatter sHtml=new SimpleHTMLFormatter("<font color='red'><b>","</b></font>");  
                Highlighter highlighter=new Highlighter(sHtml,new QueryScorer(query)); 
                highlighter.setTextFragmenter(new SimpleFragmenter(100));                     
                if(title!=null){
                    title+=" ";
                    TokenStream tokenStream=analyzer.tokenStream("title",new StringReader(title));
                    String titleText=highlighter.getBestFragment(tokenStream,title);;
                    if(titleText==null)titleText="";
                    strtext+=titleText+"  ";;
                 }
                
                if(content!=null){  
                    content+=" ";
                    TokenStream tokenStream=analyzer.tokenStream("content",new StringReader(content));
                    String contentText=highlighter.getBestFragment(tokenStream,content);
                    if(contentText==null)contentText="";
                    strtext+=contentText+"  ";;
                 }                
                if(filedId!=null){  
                    filedId+=" ";
                    TokenStream tokenStream=analyzer.tokenStream("uk_file_id",new StringReader(filedId));
                    String filedIdText=highlighter.getBestFragment(tokenStream,filedId);;
                    if(filedIdText==null)filedIdText="";
                    strtext+=filedIdText+"  ";
                }        
                if(type!=null){  
                    type+=" ";
                    TokenStream tokenStream=analyzer.tokenStream("type",new StringReader(type));
                    String typetext=highlighter.getBestFragment(tokenStream,type);
                    if(typetext==null)typetext="";
                    strtext+=typetext+"  ";;
                }            
                
                //如果获取高亮显示为空,则取原始数据。bug的一个补充。
                if(strtext.trim().equalsIgnoreCase("")){
                    strtext="标题:"+title+" 内容"+content+" 编号:"+filedId+ "分类:"+type;
                }
                rs.setResult(strtext);
                // System.out.println();
                // System.out.println(" id:"+id+"  strtext:"+strtext);
                // System.out.println();
                list.add(rs);                
            }

------解决方案--------------------
个人认为没必要把高亮弄得这么复杂,比如 直接 关键词n 对应 蓝色,n+1 对应 黑色 。。。。 直接替换就OK了
------解决方案--------------------
lucene的高亮的却不是很适合生产,我也在尝试更改高亮源码。