现象:检索后对关键字高亮显示时,高亮位置严重错误。使加粗在不相关的地方。
严重性:严重。
解析:
该现象的发生是由于建立索引的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上下载代码的同学,需要自己更新代码
分享到:
相关推荐
中文分词 庖丁解牛 2_0_0版本发布 - 企业应用 中文分词 庖丁解牛 2_0_0版本发布 - 企业应用
庖丁解牛(很好的分词效率) 在做站内全文检索时创建索引时比较快,而且感觉效果比JE要好一些。。
支持中文的庖丁解牛,庖丁分词,找了好久才找到的希望对你有帮助。
庖丁解牛分词时需要的高亮显示jar包,高亮显示需要的jar包
由于庖丁官方目前提供可下载尚不支持Lucene 3.0以上版本。因此作者对paoding进行重新编译,使其与最新Lucene 3.0.1版本适用。 Latest paoding 3.0.1 for lucene 3.0.1 使用说明: 先下载2.0.4的版本(h t t p : / ...
庖丁解牛分词器源码,包含源码与对应项目,可以用eclipse打开编译
庖丁解牛分词 java包庖丁解牛分词 java包庖丁解牛分词 java包庖丁解牛分词 java包庖丁解牛分词 java包庖丁解牛分词 java包庖丁解牛分词 java包
庖丁解牛分词之自定义词库、庖丁解牛配置,java搜索分词
庖丁解牛,Lucene分词器,很难得的资源。
庖丁解牛中文分词器,可以完美整合,只要配置好字典的路径,就可以使用庖丁解牛,可以有效针对中文进行分词,而且可以自定义词典。
支持lucene3的庖丁解牛分词器和字典,可直接调用
Lucene 庖丁解牛分词法 , 能够使用它解决中文分词问题。
Version 2.0.4–alpha2 通过 analyzer.bat 程序,可以输入中文文本,即时地查看分词效果。 Jar包在lib 文件夹中。 本人倡导零分资源共享,欢迎大家下载和评论。
Paoding's Knives 中文分词具有极 高效率 和 高扩展性 。引入隐喻,采用完全的面向对象设计,构思先进。 高效率:在PIII 1G内存个人机器上,1秒 可准确分词 100万 汉字。 采用基于 不限制个数 的词典文件对文章...
最新庖丁解牛分词法的使用demo,支持Lucene3.3、3.4等3.0以上版本,庖丁解牛的分词包为自己编译生成的,之前的2.0的版本不能支持Lucene3.0以上版本,所以需要从svn下载最新的庖丁解牛源码,生成jar文件(我同样已...
一款比较好的中文分词器,可以很方便地集成到lucene中,集成到lucene3.0中的时候需要做一些修改,具体修改方法可以百度之
NULL 博文链接:https://michael-tuan.iteye.com/blog/370788
可以适用于lucene3.5的庖丁解牛分词器jar包
全文检索技术,运用庖丁解牛的分词方法,比较实用,可以借鉴。
庖丁解牛,搜索引擎分词技术,用于开发网站站内搜索所需分词技术工具包。