现象:检索后对关键字高亮显示时,高亮位置严重错误。使加粗在不相关的地方。
严重性:严重。
解析:
该现象的发生是由于建立索引的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上下载代码的同学,需要自己更新代码
分享到:
相关推荐
《Lucene中文分词:庖丁解牛》 在信息技术高速发展的今天,全文搜索引擎已经成为网站内容检索不可或缺的一部分。其中,Apache Lucene作为一个开源的全文检索库,被广泛应用于各种项目中,尤其对于处理中文文本,...
"庖丁解牛"是一款专为中文处理设计的分词工具,其版本2.0.4-alpha2提供了更稳定和高效的分词体验。这个工具的核心功能是将中文文本拆分成有意义的词语,这对于中文信息处理、自然语言理解和搜索引擎优化等场景至关...
【庖丁解牛 2_0_0版本】是一个专门针对中文分词的软件工具,其在企业应用中扮演着重要角色。中文分词是自然语言处理中的基础步骤,对于文本分析、信息检索、机器翻译等领域至关重要。在这个2_0_0版本的更新中,我们...
《Lucene中文分词——庖丁解牛》 在自然语言处理领域,中文分词是基础且关键的一环。在Java开发中,Apache Lucene是一个强大的全文搜索引擎库,但默认并不支持中文,这就需要借助第三方分词工具。本文将深入探讨...
"庖丁解牛分词器"是一款著名的中文分词工具,源自开源社区,因其高效的性能和灵活的应用场景而广受欢迎。在深入理解其源码的过程中,我们可以了解到许多关于自然语言处理(NLP)和Java编程的知识点。 1. **中文分词...
庖丁解牛分词时需要的高亮显示jar包,高亮显示需要的jar包
“庖丁解牛”中文分词器是一款专为中文文本处理设计的工具,其名字来源于古代寓言故事,寓意对复杂问题的深入理解和熟练掌握。它在Lucene的基础上,针对中文特有的语法结构和词汇习惯,提供了更加符合中文语境的分词...
由于庖丁官方目前提供可下载尚不支持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 : / ...
"庖丁解牛分词"是一个针对中文文本的分词工具,它借鉴了中国古代庖丁解牛的故事,寓意对文本进行精细、深入的剖析。这个工具的主要目标是帮助开发者更准确地切分中文句子,提取关键信息,从而提升搜索效率或理解文本...
"庖丁解牛工具"是一款基于Java开发的文本分析工具,尤其在中文分词领域有着广泛的应用。这个工具的名字来源于中国古代寓言故事“庖丁解牛”,寓意对文本的精细处理和深入理解,就像庖丁对牛肉的熟练切割一样。在IT...
"庖丁解牛分词" 是一款针对中文文本处理的分词工具,主要适用于Java环境。这个工具包的名称形象地借用中国古代故事“庖丁解牛”,寓意对文本的精细处理,如同庖丁对牛肉的熟练分解。在Java开发中,分词是自然语言...
标题 "sorlr + tomcat+ 庖丁解牛中文分词 配置文档" 提到的是一个关于在Apache Solr中集成Tomcat服务器,并利用庖丁解牛中文分词工具进行中文处理的配置教程。这个配置过程对于搭建支持中文搜索的Solr环境至关重要。...
"庖丁解牛"分词器采用了先进的算法和技术来解决这个问题,包括基于词典的匹配、上下文信息分析以及统计学习方法等,使得它在处理中文文本时表现出了较高的准确性和效率。 "Lucene"是一个流行的开源全文搜索引擎库,...
"庖丁解牛jarbao"是一个专为中文分词设计的工具,它的核心是"庖丁解牛中文分词器"。在Java开发环境中,它通常以jar包的形式提供,如"paoding-analysis - 3.1.jar",这表明它是基于Java语言实现的,并且是版本3.1的...
然而,由于中文的复杂性,简单的英文分词策略无法满足需求,于是有了针对中文的分词方法——"庖丁解牛分词法"。该方法是专门为了解决Lucene在处理中文文本时的分词难题而设计的。在本文中,我们将深入探讨这一分词法...
《庖丁解牛 源码 for Lucene 2.4》是一份针对开源全文搜索引擎Lucene 2.4版本的深度解析资料。这个压缩包包含的文件名为"paoding-for-lucene-2.4",很可能是针对中文处理的Paoding Lucene库的源代码分析或扩展。...
Paoding's Knives 中文分词具有极 高效率 和 高扩展性 。引入隐喻,采用完全的面向对象设计,构思先进。 高效率:在PIII 1G内存个人机器上,1秒 可准确分词 100万 汉字。 采用基于 不限制个数 的词典文件对文章...
最新庖丁解牛分词法的使用demo,支持Lucene3.3、3.4等3.0以上版本,庖丁解牛的分词包为自己编译生成的,之前的2.0的版本不能支持Lucene3.0以上版本,所以需要从svn下载最新的庖丁解牛源码,生成jar文件(我同样已...
在这里,"庖丁解牛"被用来形容一种精细的分词方法,它可能是指在进行全文检索时,对文本进行深入细致的分析,就像庖丁解剖牛一样,精确地识别和拆分出每个词语。 分词是全文检索的重要步骤,它将连续的文本序列分割...