`
banditjava
  • 浏览: 161451 次
  • 性别: 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] Lucene入门心得

    - **案例研究**:许多开源项目和商业产品,如Apache Nutch(网络爬虫)、Apache Mahout(机器学习库)等,都依赖Lucene来实现其搜索功能。 总的来说,Lucene是一个强大且灵活的全文检索工具,它的核心在于如何高效...

    everynote云笔记

    2. **nutch2.2.1安装部署.html**:Nutch是一款开源的Web爬虫项目,广泛用于数据采集和搜索引擎构建。这个指南详细介绍了如何配置和部署Nutch 2.2.1版本,包括设置环境变量、修改配置文件、启动爬虫进程以及与其他...

    thymeleaf-2.0.15.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    javassist-3.25.0-GA.jar中文-英文对照文档.zip

    # 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    “计及源荷双重不确定性的虚拟电厂微网日前随机优化调度模型设计与实现(基于蒙特卡洛与概率距离法处理不确定性变量)”

    内容概要:本文详细介绍了利用MATLAB进行虚拟电厂日前随机优化调度的方法。首先,通过蒙特卡洛模拟生成大量光伏出力和负荷的随机场景,考虑到光伏出力和负荷预测的不确定性。接着,采用概率距离削减法将大量场景缩减为少数典型场景,确保计算效率的同时保留重要特征。然后,构建随机优化模型,将燃气轮机、储能、弃光等成本纳入目标函数,并设置严格的功率平衡和设备出力限制作为约束条件。最终,使用CPLEX求解器求解该混合整数规划问题,得到最优调度方案。实验结果显示,相比传统确定性优化,随机优化显著提高了系统的鲁棒性和经济效益。 适合人群:从事电力系统研究、虚拟电厂调度、智能电网优化的研究人员和技术人员。 使用场景及目标:适用于需要处理光伏出力和负荷预测不确定性的虚拟电厂调度场景,旨在提高调度方案的稳定性和经济性,降低运营风险。 其他说明:文中提供了详细的MATLAB代码片段,帮助读者理解和实现具体的算法步骤。此外,还给出了若干实用技巧和注意事项,如场景削减时的概率归一化、储能SOC约束的跨场景耦合等。

    aws-java-sdk-s3-1.12.249.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    农产品销售管理系统 - Java课程设计项目 - SpringBoot毕业设计 - Vue+MySQL期末大作业

    农产品销售管理系统基于SpringBoot+MyBatisPlus+Vue+MySQL开发,专为Java课程设计、毕业设计及初学者打造。适合作为Java期末大作业或实战练手项目。采用IDEA开发,技术主流,代码规范,帮助快速掌握全栈开发技能,助力Java学习与答辩!

    aws-java-sdk-s3-1.12.254.jar中文-英文对照文档.zip

    # 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    物联网设备开发_蓝牙低能耗BLE技术_小米手环1非心率版数据读取与控制_实现Android平台下小米手环1代非心率版设备的蓝牙连接_步数数据获取_电量监测_震动控制功能_适用于An.zip

    物联网设备开发_蓝牙低能耗BLE技术_小米手环1非心率版数据读取与控制_实现Android平台下小米手环1代非心率版设备的蓝牙连接_步数数据获取_电量监测_震动控制功能_适用于An

    安卓系统开发_蓝牙低功耗监测与音频控制_支持AirPods全系列电量显示与入耳检测_为OPPO手机深度优化并兼容其他安卓设备的智能耳机管理助手_实现耳机离耳自动暂停和入耳自动播放功.zip

    安卓系统开发_蓝牙低功耗监测与音频控制_支持AirPods全系列电量显示与入耳检测_为OPPO手机深度优化并兼容其他安卓设备的智能耳机管理助手_实现耳机离耳自动暂停和入耳自动播放功

    基于.NET 6的WPF工具:集成OpenCVSharp与ReactiveUI,深度学习目标识别及3D点云数据处理

    内容概要:本文介绍了一个基于.NET 6 WPF框架构建的多功能图像处理与3D点云显示工具。该项目集成了ReactiveUI用于响应式UI设计,OpenCVSharp用于图像处理,以及HelixToolkit用于3D点云渲染。通过ReactiveUI实现了参数的实时调整和图像处理的即时反馈,如Canny边缘检测、高斯模糊等。此外,项目还包括了YOLOv4的目标检测功能,支持多种3D点云格式的导入和渲染。文中详细描述了各个模块的技术实现细节,包括性能优化和常见问题的解决方案。 适合人群:熟悉.NET和WPF框架的开发者,尤其是对图像处理和3D点云感兴趣的研发人员。 使用场景及目标:① 实时调整图像处理参数,快速验证算法效果;② 作为3D点云查看器,支持多种格式的点云数据;③ 集成YOLOv4进行目标检测,适用于计算机视觉领域的研究和开发。 其他说明:项目仍在持续改进中,源码中有许多待优化的地方,提供了丰富的扩展空间和技术挑战。

    人工势场法路径规划Matlab代码详解:涵盖两种方法的编写与注释,公式解释及A*、rrt等算法整合

    内容概要:本文探讨了机器人路径规划领域的多种经典算法,重点介绍了人工势场法的基本原理和Matlab实现方法。文中不仅提供了传统人工势场法的具体代码实现,还针对其易陷入局部最优的问题提出了改进措施,如引入随机扰动。此外,简要提及了A*和RRT算法的特点及其实现思路。通过详细的代码解析和参数调优指南,帮助读者更好地理解和应用这些算法。 适合人群:对机器人路径规划感兴趣的初学者以及有一定编程基础的研究人员。 使用场景及目标:适用于希望深入了解人工势场法的工作原理并掌握其具体实现的技术人员。目标是能够独立编写和优化路径规划算法,特别是在Matlab环境下进行实验和验证。 其他说明:文章附带了完整的代码片段和注释,便于读者实践操作。同时强调了不同算法的选择依据和应用场景,鼓励读者根据实际情况灵活选用合适的方法。

    威纶通触摸屏一机多屏程序

    内容概要:本文深入介绍了威纶通触摸屏一机多屏程序及其与FX3U系列PLC和MODBUS通讯的集成应用。首先,文章阐述了系统的硬件架构,即一个FX3U系列PLC搭配四个MT6051ip触摸屏的工作原理。接着,详细解析了威纶通模板的特点,特别是梯形图的详尽注释,便于理解和维护。此外,文章还探讨了PLC与上位机的MODBUS通讯设置,包括波特率、数据位、停止位等参数的具体配置方法。最后,强调了该系统的学习意义和借鉴价值,适用于新手和资深工程师。 适合人群:从事自动化控制领域的工程师和技术人员,尤其是那些希望深入了解PLC、触摸屏和MODBUS通讯的人群。 使用场景及目标:①帮助工程师快速掌握威纶通触摸屏的一机多屏配置;②提高PLC与触摸屏、上位机之间的通讯效率;③优化中小型企业生产线的监控系统,提升生产效率和稳定性。 其他说明:文中提供的实例和代码片段有助于读者更好地理解和实践相关技术,同时附带了一些实用的小技巧,如心跳检测和双看门狗设计,增强了系统的可靠性和容错能力。

    CNC雕刻机STM32F407源码详解:带详细中文注解与原理图解析

    内容概要:本文深入剖析了一款基于STM32F407的CNC雕刻机控制系统,涵盖硬件原理图和源码实现。首先介绍了步进电机驱动部分,详细解释了XYZ三轴的方向引脚配置及时序控制,确保电机平稳运行。接着讨论了PWM脉冲生成的核心配置,通过定时器精确控制雕刻精度,并解决了高速雕刻时的脉冲丢失问题。串口通信部分采用DMA+空闲中断,显著提升了数据处理效率。运动插补算法利用定时器触发DMA传输脉冲,实现高效的三轴联动。此外,文中还涉及了G代码解析、运动前瞻算法以及硬件设计中的防呆措施,如IO口的TVS二极管和RC滤波。最后,分享了一些调试经验和隐藏的开发彩蛋,如通过LED灯效显示工作状态和电流检测实现堵转保护。 适合人群:具备嵌入式开发基础,尤其是对STM32和CNC雕刻机感兴趣的开发者和技术爱好者。 使用场景及目标:①帮助开发者理解和实现CNC雕刻机的控制系统;②提供详细的硬件和软件设计方案,便于动手制作;③分享调试技巧和实战经验,提高系统的稳定性和可靠性。 阅读建议:本文不仅提供了详细的代码实现和硬件设计,还包括了许多实战经验和调试技巧,因此在阅读过程中应重点关注这些细节,并尝试复现相关功能。

    aws-java-sdk-s3-1.12.242.jar中文-英文对照文档.zip

    # 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    karson711_JKCircleViewDemo_12888_1745868188120.zip

    karson711_JKCircleViewDemo_12888_1745868188120

    医学超声成像_基于FPGA和CYUSB30的超声信号处理_超声波发射与AD采集_剪切波弹性成像_多通道数据同步传输_高速BULK传输_URAT状态控制_4096点扫描线采集_30.zip

    医学超声成像_基于FPGA和CYUSB30的超声信号处理_超声波发射与AD采集_剪切波弹性成像_多通道数据同步传输_高速BULK传输_URAT状态控制_4096点扫描线采集_30

    一些小游戏,比较好玩,windows10系统运行

    一些小游戏,比较好玩,windows10系统运行

Global site tag (gtag.js) - Google Analytics