2011-04-11 34 views
4

我抓取我們的大型網站(S)使用Nutch,然後使用Solr,結果相當不錯的索引中。但是,整個網站有幾個菜單結構可以索引和破壞查詢結果。刪除從HTML菜單中的爬行索引或者使用Nutch和Solr

這些菜單中的每一個都明確定義在DIV中,所以<div id="RHBOX"> ... </div> or <div id="calendar"> ...</div>和其他幾個。

我需要,在某些時候,刪除這些div內容。

我猜測正確的地方是在solr索引期間,但無法解決問題。

一個模式看起來像(<div id="calendar">).*?(<\/div>)但我不能在<tokenizer class="solr.PatternTokenizerFactory" pattern="(<div id="calendar">).*?(<\/div>)" />工作,我真的不知道把它放在schema.xml中。

當我把schema.xml中這種模式不解析。

回答

1

Here is a patch對於SOLR,您可以將其放置在索引配置中,以忽略您配置的標記的內容。但是,它只能用於XML,所以如果你可以整理你的HTML或者你知道它是XHTML,那麼這將起作用,但它不能用於任何隨機HTML。

0

如果你想這樣做,我相信你應該在nutch中編寫一個自定義的解析器,這樣索引的數據不包含數據。 基本上解析後的文本數據是沒有任何結構的原始文本。

+0

這是不正確。 Solr分析nutch已經抓取的原始html。 Nutch也將其解析爲自己的索引。 – hayres 2011-04-12 07:04:42

+0

OK thx,我沒有意識到SOLR是解析原始html。 – millebii 2011-04-12 19:36:25

+2

這並非完全正確。 Solr分析nutch創建的Lucene Document對象。部分數據是原始HTML,但還有其他屬性,如nutch向Solr提供的title和contentType。 Solr不解析它。 – mlathe 2011-09-26 17:08:19

1

我覺得你有幾個選擇:

  1. 延長Nutch的HTML解析器,並添加邏輯來進行剝離頭。 (可能有更好的地方要做到這一點,當你的原始數據一樣,但DOM解析之前)
  2. 使您的網站足夠聰明,不畫時的Nutch爬行頭。通過檢查請求頭中的User-Agent值,這很容易實現。您可能需要更好地播種您的抓取,因爲標題中的鏈接不會幫助他們找到其他頁面
  3. 某種方式讓Solr移除nutch數據的標頭。我不知道你是如何做到這一點,我覺得意味着你失去一些的Nutch/Solr的協同作用。
  4. 不知何故編輯Nutch的指數(只是Lucene索引)。理論上,您可以遍歷索引中的所有文檔,並對每個文檔的正確屬性進行修剪。

我會認爲最簡單的方法來做到這一點,如果你有一個一致的方式繪製標題(即皮膚或常見的包括),那麼做#2。然後也許#1和#4。我認爲#3會是最難的,但我可能是錯的。

1

在Nutch 1.12中引入了一個新特性,使用apache tika解析器,該解析器在boilerpipe算法上工作,在解析階段本身從html頁面剝離頁眉和頁腳內容。

我們可以用以下性質的Nutch-site.xml中有這樣實現的:

<!-- parse-tika plugin properties --> 
<property> 
    <name>tika.extractor</name> 
    <value>boilerpipe</value> 
    <description> 
    Which text extraction algorithm to use. Valid values are: boilerpipe or none. 
    </description> 
</property> 
<property> 
    <name>tika.extractor.boilerpipe.algorithm</name> 
    <value>DefaultExtractor</value> 
    <description> 
    Which Boilerpipe algorithm to use. Valid values are: DefaultExtractor, ArticleExtractor 
    or CanolaExtractor. 
    </description> 
</property> 

它爲我工作。希望它能爲別人工作...:)

對於詳細的介紹,你可以參考這個票: https://issues.apache.org/jira/browse/NUTCH-961