2013-04-18 80 views

回答

0

你可以使用Nutch的2.1卡桑德拉後端,或MySQL(它有一些錯誤),或HBase的。然後,您將能夠在數據庫中進行查詢,並從頁面獲取所有HTML代碼。

2

Nutch有一系列解析器和過濾器,可以從抓取的HTML中提取內容。

您需要實施HtmlParserFilter,將原始內容寫入元標記並將其插入到SOLR字段中。

下面的教程是關於一個索引過濾器,但它遵循相同的流程。

Nutch plugin

你的類應該實現 「HtmlParseFilter」 而不是 「IndexingFilter」。 覆蓋filter()方法:

@Override 
public ParseResult filter(Content content, ParseResult parseResult, HTMLMetaTags metaTags, DocumentFragment doc) { 
    Metadata metadata = parseResult.get(content.getUrl()).getData().getParseMeta(); 
    byte[] rawContent = content.getContent(); 
    String str = new String(rawContent, "UTF-8"); 
    metadata.add("rawcontent", str); 
     return parseResult; 
} 

之後,改變你的schema.xml並添加新的領域:

<field name="metatag.rawcontent" type="text" stored="true" indexed="true" multiValued="false"/> 

編譯,部署,再爬,再索引。

您現在應該可以在您的SOLR索引中看到原始HTML內容。

注: -

確保您已啓用metatags plugins。這很重要,因爲您實際上是將rawcontent存儲爲元數據。