2016-09-27 48 views
3

我正在使用Nutch抓取某些網站並通過自定義插件(myplugin)的幫助將數據索引到彈性搜索。某些網站的元標記不是索引

我需要從爬網站點存儲在元標記中的信息。因此,爲了實現這一點,我剛剛加入Nutch的-site.xml的屬性如下:

<property> 
    <name>plugin.includes</name> 
    <value>protocol-httpclient|myplugin|urlfilter-regex|parse-(tika|html|js|css|metatags)|index-(basic|anchor|metadata)|query-(basic|site|url)|response-(json|xml)|summary-basic|scoring-opic|urlnormalizer-(pass|regex|basic)|indexer-elastic</value> 
    </property> 

    <property> 
     <name>metatags.names</name> 
     <value>*</value> 
    </property> 

    <property> 
     <name>index.parse.md</name> 
     <value>keywords,description</value> 
    </property> 

    <property> 
     <name>index.content.md</name> 
     <value>keywords,description</value> 
    </property> 

它正常工作與一些網站,但網站像this

沒有制定任何幫助將是讚賞。

回答

4

Julien nioche提供的答案和提示您可以解析器過濾器插件改變這樣的事情小寫所有元名字裏,這將解決這一問題現在。

 Metadata newMeta=new Metadata(); 
     Metadata oldMeta=parse.getData().getParseMeta(); 
     String metaValue; 
     for(String metaName:oldMeta.names()){ 
      metaValue=oldMeta.get(metaName); 
      newMeta.add(metaName.toLowerCase(),metaValue); 
     } 

     parseData = new ParseData(status, title, parse.getData().getOutlinks(), 
             parse.getData().getContentMeta(), newMeta); 
     parseResult.put(content.getUrl(), new ParseText(text), parseData); 
     return parseResult; 

HTH

+0

這是行得通的。 :)節省我的時間。 – Abhishek

3

這可能是因爲名字是大寫

<meta name="Description" content="..."> 
<meta name="Keywords" content="..."> 

也許嘗試在你的配置變體的情況。

順便說一下,您可以使用'./nutch indexchecker ...'來測試給定URL上的提取和字段生成。

編輯:https://github.com/apache/nutch/blob/master/src/plugin/index-metadata/src/java/org/apache/nutch/indexer/metadata/MetadataIndexer.java#L92將我們正在查找的鍵縮小,但解析元數據中的鍵名可能處於原始大小寫,即大寫。

在解決此問題之前,您可以將一些自定義代碼添加到您自己的插件中以小寫鍵或修改MetadataIndexer,以便保留套管或更改邏輯,以便它可以處理案例中的變體。

+0

已經嘗試過這一點,但沒有奏效。這個配置完全可以與http://www.bloomberg.com/news/articles/2016-09-23/nvidia-job-postings-suggest-an-nvidia-chip-return-to-apple-macs – Abhishek

+1

也許,但「 「http://www.bloomberg.com/news/articles/2016-09-23/nvidia-job-postings-suggest-an-nvidia-chip-return-to-apple-macs」使用「描述」和「關鍵字」小寫。 –

+1

分2步執行 - 首先檢查它們是否使用parsechecker提取,然後使用indexchecker檢查字段是否已正確生成 –