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代码如下: