highlighter包从官方网站下载编译就有几个.java文件错误,估计需要完全编译整个Sandbox,而我只编译了highlighter使得有些问题,但highighter.java的getBestTextFragments()始终有问题,而且在网络上查到lucene-highlighter可以很好的解决英文高亮的问题,但是对中文分词算法的高亮就会存在严重的问题。
比如使用CJKAnalyzer(二元分词)从内容"厦门公司在厦门成立"搜索关键字"厦门",在两个"厦门"之间的所有字符都将被高亮。如:
<b>厦门公司在厦门</b>成立。
通过修改highlighter类后,可以彻底解决中文的高亮问题。只需修改其方法public final TextFragment[] getBestTextFragments(TokenStream tokenStream,String text,boolean mergeContiguousFragments,int maxNumFragments)中循环部分的代码。
Highlighter.java代码如下:
本文介绍Lucene高亮器highlighter存在的问题及其解决方案,特别是针对中文分词高亮显示的改进方法。通过修改源码,解决了使用CJKAnalyzer时产生的不准确高亮问题。
435

被折叠的 条评论
为什么被折叠?



