原版nutch中对中文的处理是按字划分,而不是按词划分。为适应我们的使用习惯必须加上中文分词,我加的是 IKAnalyzer。下面是我的方法,我把前台和后台爬虫用两种方法实现中文分词,后台直接替换nutch的analyzer,前台则修改NutchAnalysis.jj(注:我的前台和后台是两个项目)。
前台修改:
在src/java/org/apache/nutch/analysis包下找到NutchAnalysis.jj
(1) 在 PARSER_BEGIN(NutchAnalysis)部分的导入声明中增加如下段
(2)在 TOKEN_MGR_DECLS : { 下面增加如下段
(3) 到 TOKEN : { 部分,找到| <SIGRAM: <CJK> >,这代表按字划分,修改为| <SIGRAM: (<CJK>)+ >
并在其后面加上
(4)用javacc工具生成NutchAnalysis.jj的源代码,将生成的所有java源代码全部覆盖到 src/java/org/apache/nutch/analysis包下.
有异常的话抛出就行.
后台爬虫修改:
修改src/java/org/apache/nutch/analysis包下的NutchDocumentAnalyzer,
在private static Analyzer ANCHOR_ANALYZER;后面加上
在ANCHOR_ANALYZER = new AnchorAnalyzer();后面加上
把 tokenStream修改为: