2010-06-24 60 views
0

我已經含有增長的數據庫相關性:匹配,排名基於對每個標準

  • 需求(多個標準)
  • 提供的表(多個標準)

的表標準可以是字符串(例如:國家名稱),布爾值,數字,...

我想找到所有需求匹配或多或少匹配(有點像工作銀行,牽線搭橋,...)

如果表中沒有包含多少行我會計算如下:

  • 每個需求,計算每個通過平均每個標準提供相關配套的相關性。

但是對於一個重要的數據庫來說,這會花費太多時間,不是嗎?

你推薦什麼解決方案?

回答

0

我會按照你描述的方式來做 - 但使用滾動緩存機制和一些索引。

研究創建的相關性,然後看看它是如何發展的。如果頻率較低(高讀取,低寫入),增量添加可能會很好。如果它的兩端都很高,可以分成兩個數據庫......在一個數據庫上處理更新,然後定期將後處理數據推送到另一個數據庫中,這是默認讀取數據源。

+0

非常感謝您的回答和建議AJ。 – Richard 2010-07-02 07:36:20

+0

不是一個理想的情況 - 但它很少在計算!希望你有成功。 – 2010-07-02 16:24:07

1

延長2010年6月24日的答案 - 在聯合表中捕獲預先計算的相關性分數(需求密鑰,優惠密鑰,相關性分數)。請注意,此連接表可以包含計數(需求)*計數(提供)記錄;只存儲那些關聯分數大於某個閾值的記錄可能是謹慎的。

該方法在數據插入上的計算複雜度爲O(n)。如果假設需求特徵空間(類似於報價)使得同一要約的兩個相關度得分高的要求也是「關閉」的,那麼您可以將這種複雜性降低到O(log(n))他們的特徵空間,認爲:

  • 對需求的比較特點執行K-近鄰分析(和分別爲優惠),並限制K值約爲登錄您的數據集(N)。
  • 計算羣集的代表性特徵向量之間的匹配相關性並將其存儲在數據庫表中。
  • On Insert測量新記錄與該類型的每個羣集之間的「距離」,並將外鍵存儲到新記錄中的羣集。
  • 當搜索要求以匹配需求時 - 遵循從需求到其羣集到最相關的要約羣集到單獨要約的鏈接。

這將交易速度的特異性。通過比較每個要約的樣本並對相關性進行排序來驗證初始假設的準確性;遍歷所提供的有序集合並計算您在查找結果集中找到的數量,然後找到缺失的結果集。對這個測試的主觀分析會給你一個關於多少Clustering花費你的想法。