2011-05-15 52 views
0

的原貼張貼在https://stackoverflow.com/questions/6007097/design-question-for-notification-system的通知系統設計問題

這裏是進一步澄清的問題:通知系統的目的就是要通知用戶(通過電子郵件現在)時,該網站的內容已被更改或更新或新的發佈。這可以被視爲一個通知系統,人們爲第三方網站定義一個規則或關鍵字,並且通知系統出去爬取第三方網站並創建搜索倒排索引。然後,一個新的鏈接或文檔顯示爲用戶定義的關鍵字或規則(底部關於用例的更多解釋),

澄清使用的案例:假設我是craigslist用戶並正在尋找二手車。我定義了一個規則「本田協議」,「年」1996年和價格範圍從「2000美元到3000美元」。

對於上面的用例來說,什麼是最佳方法,以及如何利用Apache Lucent,Apache Solr和Apache Nutch等開源技術以及Apache Hadoop來解決此用例。 您可以建立搜索引擎的東西,並與規則和關鍵字通知系統。我只是需要一些指針,並幫助如何整合這些開源軟件包來解決用例問題?

任何幫助和指針將不勝感激。我們需要三個重要組件:

 
1) Web Crawler 
2) Index Creator 
3) Rule or keyword Mather 

任何幫助將不勝感激。我指的是這個將Nutch和Solr集成在一起的維基,用於上述目的http://wiki.apache.org/nutch/RunningNutchAndSolr

+0

這是一個非常廣泛的要求,而不是容易回答的問題。我建議你想出一些更具體的具體問題。你是否開始實施這個系統?你有任何特定的技術要求(即只使用java,mongodb等)? – 2011-05-15 21:15:03

回答

0

在潛入網絡抓取網站之前,您也應該看看Google的自定義搜索API。這樣,谷歌可以幫助您返回基於關鍵字的搜索結果,您可以根據您的額外算法/規則等在您的應用程序中進行篩選,並使整個工作起作用。

2

你的問題是一個很大的問題,但我會採取刺探,因爲我設計和實現了這樣的系統。

忽略用戶帳戶管理,你的系統需要提供的手段:

  1. 檢索新的前景數據(蜘蛛)

  2. 識別和提取前景數據相關的結果(過濾)

  3. 收集,維護和組織的結果(存儲)

  4. 小號基於各種元數據(查詢)

  5. 格式的結果交付給用戶(模板)

  6. 交付格式的結果給用戶(交付)

如果你的項目的範圍是選結果(比如說每天需要蜘蛛的站點少於100個),你可能會與許多開放源代碼的網絡蜘蛛之一相處,包括wget,Nutch,WebSphinx等等。你可能需要提供工具(定製軟件)監控和控制。如果你的項目範圍比這大,你可能需要「推出你自己的」蜘蛛解決方案(定製軟件)。通常這將被設計爲分佈式並行架構。

對於簡單過濾,正則表達式就足夠了,但對於需要HTML佈局知識的更復雜任務(提取頁面上第四個表的第五個列表元素(<LI/>)的文本組件),您需要使用XHTML解析器。但是,如果繼續,您需要提供自定義軟件,以根據用戶的需求進行過濾。

儘管可以使用任何數據庫技術來存儲從檢索到的文檔中提取的結果,但使用針對Apache SOLR等文本進行優化的引擎可以讓您根據需要輕鬆擴展搜索條件。由於SOLR支持附件和搜索與每個文檔相關的元數據,因此這將是一個不錯的選擇。您還需要在此處提供自定義軟件來自動執行此步驟。

從SOLR中選擇候選結果列表後,可以使用任何腳本語言將它們模板化成一個或多個電子郵件,並將它們注入郵件傳輸代理(MTA)。這也需要定製軟件來自動執行此過程(並且如果需要,可將用戶特定數據插入每條消息中)。