浏览 3700 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-08-07
严重性:严重。 解析: 该现象的发生是由于建立索引的token位置构造错误引起的。经过诊断,错误的地方为XTokenizer.java的next方法。还好,代码只需要 做2、3行的增减。 解决: 在原来的XTokenizer类next方法找到: // 构造"牛",并使用knife"解"之 beef.set(0, charCount); 然后在他们的下一行,dissected = 0;的前面 加上offset += Math.abs(dissected);这一行 同时删除掉: offset -= remainning; offset += read; 这两行。(这两行在代码中并不是紧哎的) 修改后的next方法如下 @Override public Token next() throws IOException { // 已经穷尽tokensIteractor的Token对象,则继续请求reader流入数据 while (tokenIteractor == null || !tokenIteractor.hasNext()) { System.out.println(dissected); int read = 0; int remainning = -1;//重新从reader读入字符前,buffer中还剩下的字符数,负数表示当前暂不需要从reader中读入字符 if (dissected >= beef.length()) { remainning = 0; } else if (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); int charCount = remainning + read; if (charCount < 0) { // reader已尽,按接口next()要求返回null. return null; } if (charCount < bufferLength) { buffer[charCount ++] = 0; } // 构造"牛",并使用knife"解"之 beef.set(0, charCount); offset += Math.abs(dissected); // 增加这个代码 //offset -= remainning; //删除或注释掉这行代码 dissected = 0; } dissected = knife.dissect((Collector)this, beef, dissected); //offset += read;// !!! //删除或注释掉这行代码 tokenIteractor = tokenCollector.iterator(); } // 返回tokensIteractor下一个Token对象 return tokenIteractor.next(); } 不是从SVN上下载代码的同学,需要自己更新代码 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-08-07
请问能告知svn地址吗?
|
|
返回顶楼 | |
发表时间:2007-08-07
https://paoding.googlecode.com/svn/trunk
|
|
返回顶楼 | |
发表时间:2007-08-07
Thanks
|
|
返回顶楼 | |
发表时间:2007-08-07
Qieqie 写道 现象:检索后对关键字高亮显示时,高亮位置严重错误。使加粗在不相关的地方。
严重性:严重。 解析: 该现象的发生是由于建立索引的token位置构造错误引起的。经过诊断,错误的地方为XTokenizer.java的next方法。还好,代码只需要 做2、3行的增减。 解决: 在原来的XTokenizer类next方法找到: // 构造"牛",并使用knife"解"之 beef.set(0, charCount); 然后在他们的下一行,dissected = 0;的前面 加上offset += Math.abs(dissected);这一行 同时删除掉: offset -= remainning; offset += read; 这两行。(这两行在代码中并不是紧哎的) 修改后的next方法如下 @Override public Token next() throws IOException { // 已经穷尽tokensIteractor的Token对象,则继续请求reader流入数据 while (tokenIteractor == null || !tokenIteractor.hasNext()) { System.out.println(dissected); int read = 0; int remainning = -1;//重新从reader读入字符前,buffer中还剩下的字符数,负数表示当前暂不需要从reader中读入字符 if (dissected >= beef.length()) { remainning = 0; } else if (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); int charCount = remainning + read; if (charCount < 0) { // reader已尽,按接口next()要求返回null. return null; } if (charCount < bufferLength) { buffer[charCount ++] = 0; } // 构造"牛",并使用knife"解"之 beef.set(0, charCount); offset += Math.abs(dissected); // 增加这个代码 //offset -= remainning; //删除或注释掉这行代码 dissected = 0; } dissected = knife.dissect((Collector)this, beef, dissected); //offset += read;// !!! //删除或注释掉这行代码 tokenIteractor = tokenCollector.iterator(); } // 返回tokensIteractor下一个Token对象 return tokenIteractor.next(); } 不是从SVN上下载代码的同学,需要自己更新代码 楼主,这个问题我发现很久了,也曾发过信给你叫你改正,很高兴你见到你的贴子,但问题仍未解决。 如索引中存在“中华人民共和国”,现在搜索“中华”、“人民”或“中华人民”,都会将“中华人民共和国”全部高亮,希望得到解决。。。 |
|
返回顶楼 | |
发表时间:2007-08-08
请问lz的庖丁解牛在linux要怎么样跑起来呢?
|
|
返回顶楼 | |