paoding 支持solr 4.2 高亮问题几处细节备忘

简介: 假期梳理了之前在新浪博客的文档,将一些有用的内容搬到这里。本文介绍paoding 支持solr 4.2 高亮问题几处细节,期待可以帮助大家少踩坑。

高亮exception  

2014-04-01 23:23:43,568 ERROR [com.taobao.tsearcher.service.component.SearchHandler] - -->SearchException
com.taobao.tsearcher.common.exeception.TSearcherException: org.apache.lucene.search.highlight.InvalidTokenOffsetsException: Token
测试 exceeds length of provided text sized 2


问题所在  

PaodingTokenizer 里面的resetend 方法的细节处理。

PaodingTokenizer
相关代码和说明如下

@OverridepublicbooleanincrementToken()throwsIOException{clearAttributes();//while(tokenIteractor==null||!tokenIteractor.hasNext()){//System.out.println(dissected);intread=0;intremainning=-1;if(dissected>=beef.length()){remainning=0;}elseif(dissected<0){remainning=bufferLength+dissected;}if(remainning>=0){if(remainning>0){System.arraycopy(buffer, -dissected, buffer, 0, remainning);}read=input.read(buffer, remainning, bufferLength-remainning);inputLength+=read;intcharCount=remainning+read;if(charCount<0){returnfalse;}if(charCount<bufferLength){buffer[charCount++]=0;}beef.set(0, charCount);offset+=Math.abs(dissected);//offset-=remainning;dissected=0;}dissected=knife.dissect((Collector)this, beef, dissected);//offset+=read;//!!!tokenIteractor=tokenCollector.iterator();}Tokentoken=tokenIteractor.next();//log.warn("token.startOffset="+token.startOffset()+",token.endoffset="+token.endOffset());//termAtt.setTermBuffer(token.term());//termAtt.setEmpty();//termAtt.append(token);//v3.*4.*append//termAtt.copyBuffer(token.buffer(), 0, token.length());//wrongforpaodingV4.*termAtt.copyBuffer(token.buffer(), 0, token.buffer().length);//V4.*offsetAtt.setOffset(correctOffset(token.startOffset()),
correctOffset(token.endOffset()));//log.warn("token="+token+",startOffset="+offsetAtt.startOffset()+",endOffset="+offsetAtt.endOffset());typeAtt.setType("paoding");returntrue;}@Overridepublicvoidreset()throwsIOException{super.reset();offset=0;inputLength=0;offsetAtt.setOffset(0, 0);termAtt.setEmpty();}@Overridepublicfinalvoidend()throwsIOException{//setfinaloffsetsuper.end();dissected=0;beef.set(0, 0);finalintfinalOffset=correctOffset(offset);this.offsetAtt.setOffset(finalOffset, finalOffset);}


目录
相关文章
|
2月前
|
安全 数据管理 PHP
文本,Vitepress的优势之处,配合Typora进行页面撰写可以同步设计相同的HTML页面
文本,Vitepress的优势之处,配合Typora进行页面撰写可以同步设计相同的HTML页面
|
5月前
|
JavaScript 前端开发
5款MicrosoftEdge扩展推荐(亲测有用 极力推荐
5款MicrosoftEdge扩展推荐(亲测有用 极力推荐
161 0
5款MicrosoftEdge扩展推荐(亲测有用 极力推荐
|
11月前
Axure快速入门(05) - Master母版减少重复操作
Axure快速入门(05) - Master母版减少重复操作
37 0
|
数据安全/隐私保护
谈一谈|文档加水印的常见做法
谈一谈|文档加水印的常见做法
112 1
|
SQL 数据库
CRUP为后面使用框架在页面上增删改查做下铺垫.(一)
CRUP为后面使用框架在页面上增删改查做下铺垫.(一)
138 0
CRUP为后面使用框架在页面上增删改查做下铺垫.(一)
CRUP为后面使用框架在页面上增删改查做下铺垫.(二)
CRUP为后面使用框架在页面上增删改查做下铺垫.(二)
93 0
|
数据库连接
系统必需文件收录贴
系统必需文件收录贴
643 0