如何向nutch索引中添加自己的Field

向nutch中添加自己的field也是比较简单的,和直接调用lucene向索引中添加field基本相同,首先设定添加的field是否要被存储分词索引,然后将field添加到NutchDocument中,其他的工作就nutch会自动完成:

(1)首先要在Indexer的index函数配置执行索引工作前设定添加Field的属性,因为添加的pagetime是用来进行对结果排序使用的,所以它的属性不能被分词需要被索引,设置属性代码改动如下:

  /**
   * 修改方法:根据爬取深度建立索引,depth就是爬取深度
   * @param luceneDir
   * @param crawlDb
   * @param linkDb
   * @param segments
   * @param depth
   * @throws IOException
   */
  public void index(Path luceneDir, Path crawlDb,
		  Path linkDb, List<Path> segments, int depth)throws IOException {
	  
	    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	    long start = System.currentTimeMillis();
	    LOG.info("Indexer: starting at " + sdf.format(start));

	    final JobConf job = new NutchJob(getConf());
	    job.setJobName("index-lucene " + luceneDir);

	    IndexerMapReduce.initMRJob(crawlDb, linkDb, segments, job, depth);
	    FileOutputFormat.setOutputPath(job, luceneDir);

	    LuceneWriter.addFieldOptions("segment", LuceneWriter.STORE.YES, LuceneWriter.INDEX.NO, job);
	    LuceneWriter.addFieldOptions("digest", LuceneWriter.STORE.YES, LuceneWriter.INDEX.NO, job);
	    LuceneWriter.addFieldOptions("boost", LuceneWriter.STORE.YES, LuceneWriter.INDEX.NO, job);
	    /**
	     * 设置pagetime的属性值
	     */
	    LuceneWriter.addFieldOptions("pagetime", LuceneWriter.STORE.YES, LuceneWriter.INDEX.UNTOKENIZED, job);
        
	    NutchIndexWriterFactory.addClassToConf(job, LuceneWriter.class);

	    JobClient.runJob(job);
	    long end = System.currentTimeMillis();
	    LOG.info("Indexer: finished at " + sdf.format(end) + ", elapsed: " + TimingUtil.elapsedTime(start, end));
	  
  }

(2)因为IndexerMapReduce负责将需要索引的数据添加到NutchDocument中,然后由Nutch完成索引建立工作,所以需要在这个地方将我们添加的pageTime属性添加到NutchDocument文档中,代码改动如下:

    /**
     * 先比较dbDatum和fetchDatum中的pageTime的值,选择最大的作为索引值。
     */
    long temp=dbDatum.getPageTime();
    if(temp<fetchDatum.getPageTime()){
    	temp=fetchDatum.getPageTime();
    }
    doc.add("pagetime", temp);


运行程序,在最终的索引文件中,会看到我们添加的Field。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WitsMakeMen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值