2010-09-14 89 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应用程序启动时,我计算了所有项目和标签(它反映了每个项目的标签频率)的术语 - 文档矩阵,并且只要应用程序正在运行,就将该矩阵保留在内存中。无论何时添加或删除标签,我都使用此矩阵来更新数据库中的相似性。但是,这是相当低效的。你有什么建议吗?

谢谢!

回答