nutch analyzers 使用机制

18 篇文章 0 订阅
16 篇文章 0 订阅

 

一。索引时analyzer

我们知道,在Indexer进行index时,是利用IndexOutputFormat进行rewrite的,其中write filters有一个:LuceneWriter。它是这样处理的:

*如果crawl过程index filters有添加lang field,那么在此时是依据此它进行retrieve  plugin related NutchAnalyzer;否则

*使用default NutchDocumentAnalyzer。默认地,它使用了ContentAanlzyer and AnchorAnalyzer,但这两个都是不理想的,所以本来是需要改造的。即使用self-defined analzyer instead of it.

 

总结以上二点,就是默认的使用了self-defined analyzer to index.

要做到像gg这样的,可以在index是添加一上lang filed就行了。

 

 

二。搜索query 时analyzer

我们在调用Query生成一个Nutch's query时,需要调用Query.parse(keywrod,lang,conf)方法,同样这时也产生了一个anayzer depended upon the lang。然后传递给由javacc定义的NutchAnalysis来parse,并在compound阶段进行tokenized string.

但发现只有在WORD,ACRONYM,SIGRAM时才触发。

所以这个与index时是同一个的。

 

三。highlight时analyzer

在搜索时取回summary时已经进行了smmary filter.如FetchSegments.getSummary(hits,query)。

(注意这个query是利用二中的query,所以如果这里的query对应的analyzer如果与具体的summary filter中的不对应时,可以引起问题。)

由于系统取回具体的plugin时只对第一个有效,所以即便在xml中添加了多个也是没有有的,因为原则上不需要像其它filters一样要处理多次。这里默认使用BasicSummarier(另外还有一个LuceneSummarier)。其中它指定了NutchDocumentAnalyzer来进行tokenized.表明这与customerized analyzer plugin是有区别的。

 

 

综合分析,index与search是为了符合传统意义上的搜索匹配原则,所以使用的是同一个analyzer;

而highlighht是系统内置的另外一个实现。当然了,如果没有具体的langage specailed analyzer时,将统一使用系统的,即NutchDocumentanalyzer。

 

我想,之所以有这个区别,这对很多大型综合搜索引擎来说,这是类似的。这是为了更加贴近用户的体验也罢。

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值