读书人

修改highlighter解决思路

发布时间: 2012-03-11 18:15:39 作者: rapoo

修改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的高亮的却不是很适合生产,我也在尝试更改高亮源码。

读书人网 >网络基础

热点推荐