`
banditjava
  • 浏览: 159920 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

研究Nutch开源搜索引擎心得记录

阅读更多
---------------20080828------------
下载源码,初步研究
--------------20080829-------------
http://blog.csdn.net/lianqiang198505/archive/2007/04/18/1569680.aspx
前两天试用了nutch目前的最新版本。这个版本是完全建立在hadoop基础上的,也就是一个分布式的系统。

去网上搜索了一下,发现了一篇很好的知道文档,这个给出链接地址

http://wiki.apache.org/nutch/NutchHadoopTutorial

按照这个上面的做,如果你运不差的话应该可以让nutch自己跑起来,而且后面的分布式检索也可以尝试一下,这里把我整个过程出现的问题分享如下:

   1. 0.9版本需要一个叫masters的文件,这个文件的内容存放备用的名字节点,没有也不影响你正常的使用;
   2. 可以把mapred.map.tasks、mapred.reduce.tasks按节点的倍数调大,这样运行速度会更快;
   3. 如果发现节点找不到,这个时候有可能是机器的主机名不对,修改一下就可以了;
   4. hadoop运行的时候需要占用一些端口,如果你不能弄清需要那些端口,就把防火墙打开,在局域网内安全问题不大;
   5. 抓取的时候一定要设置一下nutch-default.xml中的agent,不然它为空的话你将什么都抓取不到;
   6. 在分布式检索的时候,为了防止名字节点既做slave,又做search server,使得search server去分布式文件系统中找index,这个时候按照上面的指导我们在nutch目录下可以再建立一个文件夹,然后在里面也安装一个nutch- 0.9,注意这个配置都采用默认的就可以,然后不要调用它的start-all.sh,因为这样会有冲突,你只需要运行bin/nutch server命令就可以了,这样它就可以提供检索服务了;
   7. 那个指示所有search server服务节点的文件一定要叫search-servers.txt,不然nutch找不到其他的。


注意:运行nutch之前,需要先启动hadoop,会在/tmp目录下面产生临时PID文件,需要将/tmp改成777权限,你使用的当前用户需要有/tmp的写权限,否则运行不起来。报些看不懂的错误。我在这个地方郁闷了好几个小时,呵呵。

------------------------------20080901---------------------------
尝试crawl页面,当urls/nutch.txt只有一行,nutch-0.90有BUG,具体的链接如下,需要对源码进行修改,这个BUG在最新的版本中已经修改了。
http://hi.baidu.com/phpasp/blog/item/f3b96209f5948bcb3ac76351.html

//BUG FIX NUTCH-503
找到下面这个类删除几行,加上几行,重新编译就可以用了
Index: src/java/org/apache/nutch/crawl/Generator.java
===================================================================
--- src/java/org/apache/nutch/crawl/Generator.java      (revision 549414)
+++ src/java/org/apache/nutch/crawl/Generator.java      (working copy)
@@ -422,7 +422,16 @@

     // check that we selected at least some entries ...
     SequenceFile.Reader[] readers = SequenceFileOutputFormat.getReaders(job, tempDir);
-    if (readers == null || readers.length == 0 || !readers[0].next(new FloatWritable())) {
+    boolean empty = true;
+    if (readers != null && readers.length > 0) {
+       for (int num=0; num<readers.length; num++) {
+           if (readers[num].next(new FloatWritable())) {
+               empty = false;
+               break;
+           }
+       }
+    }
+    if (empty) {
       LOG.warn("Generator: 0 records selected for fetching, exiting ...");
       LockUtil.removeLockFile(fs, lock);
       fs.delete(tempDir);

修改完后,重新编译


抓取命令
bin/nutch crawl urls -dir crawl -depth 3 -topN 50

Once the index has been created on the DFS you can use the hadoop copyToLocal command to move it to the local file system as such.

nutch可以直接利用分布式进行查询,也可以将文件copy到本地,下面就是copy的命令
bin/hadoop dfs -copyToLocal crawl /nutch/local

配置tomcat

搞定了。


深入了解nutch,学习资料
http://www.gispark.com/html/spatial/2006/1008/294.html


-------------------20080902-03---------------
研究中文分词集成,配置paoding分词插件
1)在src/plugin下面加入,analysis-zh和lib-paoding-analyzers目录。具体参见
E:\workspace\searchengine\nutch-0.9\src\plugin\analysis-zh
E:\workspace\searchengine\nutch-0.9\src\plugin\lib-paoding-analyzers

下面是analysis-zh中的源码,是对paoding的封装,代码超级easy,主要是把配置文件和ant脚本调对就可以了
/**
* Paoding chinese analyzer
*/

package org.apache.nutch.analysis.zh;

// JDK imports
import java.io.Reader;

// Lucene imports
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;

// Nutch imports
import org.apache.nutch.analysis.NutchAnalyzer;


/**
* A simple Chinese Analyzer that wraps the Lucene one.
* @author kevin tu
*/
public class ChineseAnalyzer extends NutchAnalyzer {
   
    private final static Analyzer ANALYZER =
            new net.paoding.analysis.analyzer.PaodingAnalyzer();

   
    /** Creates a new instance of ChineseAnalyzer */
    public ChineseAnalyzer() { }


    public TokenStream tokenStream(String fieldName, Reader reader) {
        return ANALYZER.tokenStream(fieldName, reader);
    }

}


2)修改src\plugin的build.xml
   <target name="deploy">
<ant dir="analysis-zh" target="deploy"/><!--kevin 20080903 add-->
<ant dir="lib-paoding-analyzers" target="deploy"/><!--kevin 20080903 add-->
...
   </target>

   <target name="clean">
<ant dir="analysis-zh" target="clean"/><!--kevin 20080903 add-->
<ant dir="lib-paoding-analyzers" target="clean"/><!--kevin 20080903 add-->
...
   </target>

3)修改nutch-site.xml,加入|analysis-(zh)|  ,这个很重重要,否则nutch只会加载默认插件,不会加载paoding的jar包,和自己写的analysis-(zh) jar包
<property>
  <name>plugin.includes</name>
  <value>protocol-http|urlfilter-regex|parse-(text|html|js)|analysis-(zh)|index-basic|query-(basic|site|url)|summary-basic|scoring-opic|urlnormalizer-(pass|regex|basic)</value>
  <description>
  </description>
</property>

4)重新打包 ant package

5)配置tomcat,修改webapps/cse/WEB-INF/classes/nutch-site.xml
<configuration>
  <property>
    <name>fs.default.name</name>
    <value>local</value>
  </property>

  <property><!--指定本地的index目录-->
    <name>searcher.dir</name>
    <value>/nutch/local/crawled</value>
  </property>
<property>
  <name>plugin.includes</name>
  <value>protocol-http|urlfilter-regex|parse-(text|html|js)|analysis-(zh)|index-basic|query-(basic|site|url)|summary-basic|scoring-opic|urlnormalizer-(pass|regex|basic)</value>
  <description>
  </description>
</property>
</configuration>

6)配置paoding运行参数,加入paoding-analysis.properties
paoding.imports=\
ifexists:classpath:paoding-analysis-default.properties;\
ifexists:classpath:paoding-analysis-user.properties;\
ifexists:classpath:paoding-knives-user.properties

  配置export PAODING_DIC_HOME=/nutch/dic

6)启动tomcat,查看http://linux1:8080/cse

--------------------------20080904---------------------

模仿神功,修改nutch的web页面

其中about.html,search.html,help.html是用xslt来生成的,需要修改src/web/pages/zh下面的about.xml,search.xml,help.xml,然后用ant generate-docs来进行编译,生成最新的html文件

将现有的zh下面的properties从ascii转码到中文,用以下的命令
native2ascii -reverse -encoding  GBK search_zh.properties   >original\search_zh.properties
增加ant 的target
  <!-- ====================================================== -->
  <!-- native to ascii                                -->
  <!-- ====================================================== -->
  <target name="native2ascii" description="native to ascii *.js or *.property file">
<native2ascii encoding="GBK" src="src/web/locale/org/nutch/jsp/original" dest="src/web/locale/org/nutch/jsp" ext=".properties" includes="*.properties"/>
</target>

  <!-- ====================================================== -->
  <!-- Compile the Java files                                 -->
  <!-- ====================================================== -->
  <target name="compile" depends="native2ascii,compile-core, compile-plugins"/>



解决了分页问题,修改了文字,分页逻辑按照baidu的分页来做,当用户点击1~9页时只显示1~10,当选中10以上的页面时,显示   (n-10)~(n+10),这一块用一个JSP函数来实现


编译nutch0.9,有两个plugin编译不能通过,mp3,rtf插件编译,找不到jar,暂时可以不用

--------------------------20080905---------------------
编译nutch-svn项目,进一步优化页面

Nutch距离一个商业应用的搜索引擎还有多远
http://www.cnblogs.com/liushouzhao/archive/2008/01/02/1023219.html

nutch的cache策略及cache策略研究
http://blog.csdn.net/kauu/archive/2007/11/02/1863217.aspx

待续
分享到:
评论
1 楼 john2007 2009-01-13  
9.11
一天发了这么多高水平的文章,牛叉啊

相关推荐

    基于lucene和nutch的开源搜索引擎资料集合

    其中内容均为前段时间研究开源搜索引擎时搜集参考的资料,非常齐全包含的内容有: Computing PageRank Using Hadoop.ppt Google的秘密PageRank彻底解说中文版.doc JAVA_Lucene_in_Action教程完整版.doc Java开源搜索...

    Nutch开源搜索引擎增量索引recrawl的终极解决办法

    ### Nutch开源搜索引擎增量索引recrawl的终极解决办法 #### 知识点解析: ...正确配置资源限制、自动化执行recrawl流程,以及适时调整参数,都是确保Nutch搜索引擎稳定运行和提供高质量搜索结果的关键步骤。

    Nutch开源搜索引擎增量索引recrawl的终极解决办法续

    ### Nutch开源搜索引擎增量索引recrawl的终极解决办法续 #### 一、背景与问题概述 在前一篇文章中,我们探讨了Nutch开源搜索引擎在进行增量索引更新(recrawl)时遇到的问题及其初步解决方案。然而,在实际操作...

    Apache Nutch 开源搜索引擎 v1.17

    为您提供Apache Nutch 开源搜索引擎下载,Nutch的创始人是Doug Cutting,他同时也是Lucene、Hadoop和Avro开源项目的创始人。Nutch诞生于2002年8月,是Apache旗下的一个用Java实现的开源搜索引擎项目,自Nutch1.2版本...

    Apache Nutch 开源搜索引擎 v2.4

    为您提供Apache Nutch 开源搜索引擎下载,Nutch的创始人是Doug Cutting,他同时也是Lucene、Hadoop和Avro开源项目的创始人。Nutch诞生于2002年8月,是Apache旗下的一个用Java实现的开源搜索引擎项目,自Nutch1.2版本...

    nutch框架 搜索引擎

    总之,Nutch作为一个开源的Web搜索引擎框架,以其独特的透明度、灵活性和可扩展性,成为了学术研究、商业应用以及个人数据管理等多个领域的有力工具。通过不断的技术迭代和社区贡献,Nutch正逐步成为互联网信息检索...

    基于Nutch的搜索引擎系统的研究与实现

    基于Nutch的搜索引擎系统的研究与实现

    开源搜索引擎nutch-1.0.part09.rar

    Nutch 是一个开源的、Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。 nutch 1.0

    Nutch搜索引擎的页面排序修改方法研究.kdh

    Nutch是一个优秀的开放源代码的Web...分析开源搜索引擎Nutch代码,研究了Nutch的页面排序方法。在Nutch原有的结构基础上提出了3种修改Nutch 排序的方法,对每种方法的实现进行了阐述,最后对这些方法的特点进行了比较

    lucene+nutch搜索引擎开发源码1

    《lucene+nutch搜索引擎开发源码1》是一个包含开源搜索引擎项目Lucene和Nutch源代码的压缩包,主要针对搜索引擎开发的学习和实践。这个压缩包是书籍《lucene+nutch搜索引擎开发》的一部分,由于源码量较大,因此分为...

    Lucene nutch 搜索引擎 开发 实例 源码

    《Lucene与Nutch搜索引擎开发实例详解》 在信息技术领域,搜索引擎已经成为不可或缺的一部分,它们能够高效地处理海量数据,帮助用户快速找到所需信息。本文将深入探讨基于Java的开源搜索引擎框架——Lucene和Nutch...

    Nutch搜索引擎(1-5期)

    Nutch搜索引擎·Nutch简介及安装(第1期) Nutch搜索引擎·Solr简介及安装(第2期) Nutch搜索引擎·Nutch简单应用(第3期) Nutch搜索引擎·Eclipse开发配置(第4期) Nutch搜索引擎·Nutch浅入分析(第5期)

    Lucene+Nutch搜索引擎开发.王学松源代码

    《Lucene+Nutch搜索引擎开发:王学松源代码解析》 在信息技术日新月异的今天,搜索引擎已经成为了人们获取信息的重要工具。Lucene和Nutch是两个在开源社区广泛使用的搜索引擎技术,它们为开发者提供了构建高效、可...

    Lucene+Nutch搜索引擎开发

    在探讨“Lucene+Nutch搜索引擎开发”这一主题时,我们需要深入了解Lucene与Nutch这两个开源项目的功能、工作原理以及如何将它们结合起来构建一个高效的搜索引擎。 ### Lucene简介 Lucene是一个高性能、全功能的...

    搜索引擎nutch配置

    **Nutch搜索引擎配置详解** Nutch是一款开源的网络爬虫软件,主要用于收集、索引和搜索互联网上的数据。它在大数据领域中占有重要地位,尤其对于构建自定义搜索引擎的项目非常实用。Nutch的设计理念是模块化,允许...

    基于nutch的搜索引擎的设计与实现毕业论文.docx

    Nutch是一个开源的搜索引擎框架,提供了完整的搜索引擎解决方案。本文对Nutch的工作机制进行了深入分析,并对其进行了改进,以满足中文信息处理的需求。 一、搜索引擎技术概述 搜索引擎技术是互联网研究的热点之一...

    开源搜索引擎nutch-1.0.part01.rar

    Nutch 是一个开源的、Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。

Global site tag (gtag.js) - Google Analytics