nutch-0.9加入中文分词之后的索引有很多博客已经讲到过
我没有使用Cygwin模拟linux环境,而是在Tomcat中运行的nutch。这个项目工程文件是在我们的项目中的一个war包,而这个war包却是最开始的版本,因此我们要在特定的时候修改掉里面的一些文件。
但遇到一个问题是,加入分词之后放到tomcat里面发现搜索不好使了,用Luke打开索引文件可以看到中文分词的效果明显
可是用nutch查询结果却很多时候查不出来
其实原因是因为你加入的中文分词在查询里面没有被应用到,因为war包还是最老版本的war包,其中的一些修改没有体现到
修改以下几个地方,把nutch的中文分词器换成自己的分词器以JE为例
1:修改org.apache.nutch.analysis.NutchAnalysis.java文件
导入import jeasy.analysis.*;
替换其parse()方法如下:
final public Query parse(Configuration conf) throws ParseException,IOException {
Query query = new Query(conf);
StringReader input;
input=new java.io.StringReader(queryString);
org.apache.lucene.analysis.TokenStream tokenizer=new MMAnalyzer().tokenStream(queryString,input);
for(org.apache.lucene.analysis.Token t=tokenizer.next();t!=null;t=tokenizer.next()){
String[] array={t.termText()};
query.addRequiredPhrase(array);
}
{if (true) return query;}
throw new Error("Missing return statement in function");
}
2:修改org.apache.nutch.searcher.Query.java
public static Query parse(String queryString, String queryLang, Configuration conf)
throws IOException {
try {
return fixup(NutchAnalysis.parseQuery(
queryString, AnalyzerFactory.get(conf).get(queryLang), conf), conf);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
3:也是很多文章里面没有提到的一个地方org.apache.nutch.analysis.NutchAnalysis.java文件
/** Construct a query parser for the text in a reader. */
public static Query parseQuery(String queryString, Analyzer analyzer, Configuration conf)
throws IOException {
/**
* 这里我有的修改
*/
NutchAnalysis parser = new NutchAnalysis(
queryString, (analyzer != null) ? analyzer : new MMAnalyzer());//这里把默认的分词器改成自己的分词器
parser.queryString = queryString;
parser.queryFilters = new QueryFilters(conf);
return parser.parse(conf);
}
修改好了,然后用ant编译成nutch-0.9.jar,然后替换掉你tomcat中的nutch工程中的WEB-INF中的nutch-0.9.jar
然后再在这个WEB-INF中添加JE分词包,就大功告成了,这一点非常重要,因为如果不替换,tomcat还是使用了最老版本的nutch-0.9.jar。而我们需要使用的检索是自己添加的中文分词器
分享到:
相关推荐
nutch应用,nutch中文分词,nutch中文乱码
在Nutch 1.2中集成IKAnalyzer,需要修改NutchAnalysis.jj文件,将SIGRAM规则调整为支持连续的汉字,然后在代码中初始化IKTokenizer,使其能够处理输入的文本流。通过这种方式,Nutch现在能够对抓取的网页内容进行...
作为舆情监测系统的一部分,本文的目标是基于Nutch,同时,结合目前最常用中文分词技术,根据不同的中文分词方法,实验并得出不同分词方法在性能以及使用环境上的优缺点,以此为舆情监测系统选择合适的中文分词方法...
Nutch中文分词插件的编写与配置,由于Internet的迅猛发展,使得用户查找信息犹如大海捞针,而搜索引擎则能帮用户很好的解决这个问题。 Nutch是用java语言开发的,基于Lucene的完整的网络搜索引擎,并采用插件机制进行...
在本文中,我们将深入探讨如何在Tomcat环境下部署Nutch以及解决相关问题。 首先,部署Nutch到Tomcat涉及到以下步骤: 1. **准备Nutch的WAR包**:你需要下载Nutch的源代码或预编译的WAR文件。这里以Nutch 0.9为例,...
用于Nutch的中文分词,效果向单簧管得得好,强烈建议支持这种格式的数据,这是一个里程碑
### Nutch中文分词插件的编写与实现 #### 一、Nutch搜索引擎技术概览 随着互联网信息的爆炸性增长,搜索引擎成为了人们快速获取所需信息的重要工具。Nutch作为一个开源的搜索引擎框架,其核心优势在于灵活性和可...
基于Nutch的中文分词插件实现,张文龙,刘一伟,中文分词是中文垂直搜索引擎中的一个关键技术,分词的好坏直接影响提取文本的精确度。Nutch是一个开源的Web搜索引擎,它为英文用户�
### 基于Java的搜索引擎Nutch中文搜索技术研究 #### 摘要与背景介绍 随着互联网技术的发展,搜索引擎已成为人们获取信息的重要途径之一。Nutch作为一个优秀的基于Java的开源搜索引擎,其英文搜索功能非常强大,但在...
10. **部署与运行**:Nutch项目可以在本地单机模式下运行,也可以在Hadoop集群上分布式运行。通过命令行工具,可以启动爬虫、生成索引、执行搜索等操作。 总的来说,这份"nutch开发资料 搜索引擎"包含的资源对于想...
nutcher 是 Apache Nutch 的中文教程,在github上托管。nutch社区目前缺少教程和文档,而且教程对应版本号较为落后。nutcher致力于为nutch提供一个较新的中文教程和文档,供开发者学习。 github地址: ...
【知识点详解】 在Windows环境下安装Nutch涉及到多个...然而,需要注意的是,Nutch在类Unix环境(如Linux)下的运行通常更为稳定和高效,因此,如果你的项目允许,考虑在这样的环境中运行Nutch可能会带来更好的体验。
- **分词插件**: Nutch支持使用第三方分词库,如IK Analyzer或HanLP,进行中文分词。 - **URL过滤**: 可以通过编写或配置URL过滤器(如`regex-urlfilter.txt`)来控制哪些URL被爬取。 - **插件结构**: Nutch的灵活性...
本文将详细介绍如何在Windows系统下搭建Nutch检索工具,旨在为从事信息检索方向的专业人士提供一份实用的参考指南。 #### 二、准备工作 搭建Nutch之前,需要完成一些基本的准备工作: 1. **操作系统**:推荐使用...
在完成Nutch 1.7的搭建后,你可以进一步研究其工作原理,包括爬虫策略、链接分析算法、分词技术等。同时,Nutch与Hadoop结合可以处理大规模的数据抓取和索引,这在大数据领域有着广泛的应用。通过深入学习,你可以...
* 在安装完成后,需要配置 Cygwin 的环境变量,将 Cygwin 的 bin 目录添加到系统的 PATH 变量中。 * 之后,需要安装 Cygwin 的一些必要的包,例如 openssh、openssl、curl 等。 3. 安装 Nutch 1.7 安装 Nutch 1.7 ...
Nutch API和OpenSearch API则允许开发者在应用程序中集成Nutch搜索引擎功能。 Nutch的目标是让每个人都能容易地、低成本地配置一个世界级的Web搜索引擎。Nutch的扩展性使其不仅适用于学术和政府站点的搜索,也可以...