`
chencang
  • 浏览: 419324 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

对《lucene高亮显示时,String index out of range异常》的回答

    博客分类:
  • Java
阅读更多

今天在搜索结果高亮时候碰到了一个小问题,是“lucene高亮显示时,String index out of range异常”,百思不得其解,以前并没有出现过,后来google了下,终于觅得解决办法,哈哈。

 

搜了下javaeye,以前也有同学碰到和我一样的问题,在论坛上发问的,可是没有一个解答的,可能因为他没有贴代码的原因吧。

这个旧帖子是http://www.iteye.com/topic/89511

whk1007 写道
我用的是lucene-highlighter-2.0.0.jar,在高亮显示时,总是报错String index out of range: 16.发现好象是在方法highlighter.getBestFragment()处异常,请问是什么原因啊?

 

我今天出现的问题也和他一样,出现问题的代码是:

TokenStream tokenStream = TokenSources.getTokenStream((TermPositionVector) reader.getTermFreqVector(i, "CONTENT"));

 

问题就出现在上面这段代码中的i上,因为是for循环,所以我当时认为这个i就代表了docid,其实不然,在取得hits的情况下,我们通过hits.doc(i)来取得文档,通过hits.id(i)来取得文档号docid,所以上段代码中的变量i改为hits.id(i),如下

TokenStream tokenStream = TokenSources.getTokenStream((TermPositionVector) reader.getTermFreqVector(hits.id(i), "CONTENT"));

 

这样就不会出现java.lang.StringIndexOutOfBoundsException: String index out of range异常问题了

 

给我解决问题提示的文章是http://www.5yiso.cn/2008/02/12152.html 《Lucene 高亮 --不就行二次分词(zhuan)

 

教训:这是不仔细看程序说明的后果啊,以后要遇到问题要仔细看lucene源代码和说明的!

分享到:
评论
3 楼 wbzboy 2008-11-27  
谢谢楼主分享啊。
2 楼 残缺的完美 2008-10-30  
很感谢楼主的经验分享!
1 楼 ritchiewj 2008-08-07  
谢谢分享!!

相关推荐

Global site tag (gtag.js) - Google Analytics