2009-11-08 35 views
0

你們將如何着手在.Net平臺上創建「實時」搜索引擎。近來對網絡的實時搜索如今非常流行,我希望你們能幫我集思廣益。我最終可能會嘗試製作一些原型,但大多數情況下它只是一種「心理訓練」。實時網頁搜索(在.Net中)

的要求是:

  1. .NET平臺,IIS,MS SQL服務器或Lucene.Net(文件系統)
  2. 輸入數據進行索引僅僅是關鍵字加上一些元數據信息 - 沒有進一步的處理所需
  3. 數據由關鍵詞分組並通過關鍵字的出現次數進行排序
  4. 沒有歷史數據保持(數據比某一時間固定量被丟棄或移動到其他一些數據存儲舊的)

不知道太多關於主題,這是我想出迄今:

數據通過Web服務送入系統。由於數據已經是關鍵字的形式,因此不會執行進一步的處理。 WS將數據保存到數據庫。選擇查詢以固定的時間間隔執行以返回數據(例如:我們查詢過去一小時的傳入數據並每秒執行一次查詢)。分組和排序在內存中執行以卸載sql服務器。 db中的舊數據每隔幾分鐘就會丟棄。 我不知道如果有很多新的行不斷添加,sql服務器將如何處理。 然後顯示分組和排序的數據。

我相信你們對這種事情有更多的經驗和更好的想法。

問候,

的Ondrej

+0

你能舉出你認爲可能類似的網站的例子嗎? – 2009-11-08 05:09:07

+0

我想到的網站是http://search.twitter.com/。我試圖實現的功能是「趨勢主題」。 – 2009-11-08 13:58:50

回答

1

從您的系統的描述,一個最基本的數據庫模式可能類似於如下:

關鍵字 - ID(主鍵) - 關鍵字(唯一的)

輸入 - ID(主鍵) - 數據(文本)

input_keyword - ID(主鍵) - input_id(外鍵) - keyword_id(外鍵) - count(integer;次數關鍵字ID爲keyword_id出現在id爲input_id輸入) - 到期日期(時間戳;定期,已過期需要的所有條目被刪除)

數據業務將是如下:

  1. 寫入:無論何時執行輸入操作,數據庫引擎都必須處理寫入所有三個表的寫入操作。
  2. 閱讀次數:每次執行搜索操作,數據庫引擎將需要在所有三個表
  3. 刪除處理讀操作:每隔一段時間,你將需要刪除的條目input_keyword,如果需要的話,關鍵詞表。

在高度被販運的系統上,您的數據庫將會被頻繁地擊中。由於您真的只是使用數據庫來方便跨這些表執行SELECT操作,並且由於數據的壽命非常短暫,所以最好使用內存數據結構來替換「關鍵字」和「 input_keyword「表來消除對磁盤的命中。這可能需要更復雜的應用程序代碼,但在繁忙的系統上可能值得。

0

這個網站是不是真的頭腦風暴,或以幫助您設計的應用程序。

您可能想要在http://answers.onstartups.com/上發佈此信息,看看對這個想法有什麼要求和建議,以查看是否對實時網絡搜索有商業意義。

但是,您需要確定如何才能比Google更快。

+0

我很欣賞你的意見,但我認爲你稍微誤解了我的問題。我不是問是否有任何商業意識,或者我可以怎樣打敗谷歌。根據上面的要求,我只是問,實施這種系統的最佳方式是什麼。 – 2009-11-08 14:00:52