2010-09-14 21 views
0

我的iPhone應用程序正在使用下面的模式SQLite數據庫:更新的高效餘弦相似度得分

  • 項目(ID,姓名,...) - >此表包含50條記錄
  • 標籤(ID ,名稱) - >此表包含50個記錄
  • item_tags(ID,ITEM_ID,TAG_ID,USER_ID)
  • 相似之處(ID,item1_id,item2_id,得分)

項目,標籤,item_tags和相似度表中填充了預定義的記錄,因此不同項目之間的相似度已經離線計算(使用基於項目標籤的餘弦相似度算法)。

用戶可以爲項目添加額外的標籤並在稍後刪除其自定義標籤。每當發生這種情況時,項目之間的相似性分數應該在本地更新,即不聯繫服務器應用程序。

我現在的問題如下: 什麼是最有效的方法呢?到目前爲止,在iPhone應用程序啓動時,我計算了所有項目和標籤(它反映了每個項目的標籤頻率)的術語 - 文檔矩陣,並且只要應用程序正在運行,就將該矩陣保留在內存中。無論何時添加或刪除標籤,我都使用此矩陣來更新數據庫中的相似性。但是,這是相當低效的。你有什麼建議嗎?

謝謝!

回答