本文旨在给nutch添加二分法中文分词,可以预计的结果是汉字的索引不再是一个个字分开来的,从而会大大的增加搜索的准确率
修改的文件:NutchAnalysis.jj (在nutch的analysis包里面) 数据挖掘研究院
NutchAnalysis.jj 数据挖掘实验室
在TOKEN里面增加(前后有参照)
| <SIGRAM: <CJK> > 数据挖掘研究院
| <CHINAWORD: (<CHINESE><CHINESE>)> 数据挖掘研究院
{
//String newimage=new String(); 数据挖掘研究院
//for (int i = 0; i < image.length()-1; i++){ 数据挖掘研究院
// newimage += "" + image.charAt(i) + image.charAt(i + 1) + " ";
//}
//matchedToken.image += " "; 数据挖掘研究院
input_stream.backup(1);
}
// irregular words 数据挖掘研究院
| <#IRREGULAR_WORD: (<C_PLUS_PLUS>|<C_SHARP>)> 数据挖掘研究院
| <#C_PLUS_PLUS: ("C"|"c") "++" > 数据挖掘研究院
| <#C_SHARP: ("C"|"c") "#" > 数据挖掘研究院
修改
| <#CJK: // non-alphabets,but not chinese
[
"\u3040"-"\u318f",
"\u3300"-"\u337f",
"\u3400"-"\u3d2d",
"\uf900"-"\ufaff" 数据挖掘实验室
] 数据挖掘研究院
> 数据挖掘研究院
| <#CHINESE: // non-alphabets 数据挖掘实验室
[
"\u4e00"-"\u9fff" 数据挖掘研究院
]
>
| < #DIGIT: // unicode digits 数据挖掘研究院
[
"\u0030"-"\u0039", 数据挖掘研究院
... 数据挖掘实验室
修改
String term() :
{
Token token; 数据挖掘研究院
} 数据挖掘研究院
{ 数据挖掘研究院
( token=<WORD> | token=<ACRONYM> | token=<SIGRAM> | token=<CHINAWORD>)
{ return token.image; } 数据挖掘研究院
}
然后javacc NutchAnalysis.jj 数据挖掘研究院
在nutch根目录下面运行ant进行编译,然后就可以测试抓去了,我们用luke来分析index所以,可以看到都是按照二分法进行索引的 数据挖掘研究院
但是现在localhost还不能搜索出来结果,是因为默认的搜索还是采用的单字分开的,下回将解释如何来修改以支持二分法分词 数据挖掘研究院

