我有一个Web应用程序,它通过CDO将Outlook联系人同步到数据库(并返回)。数据库仅包含每个联系人一次(至少在理论上,当然是双重发生),为联系人提供单点变更,无论有多少用户在Outlook中拥有该特定联系人(如交互或类似产品)。
同步过程不是自动的,而是用户初始化的。在用户决定同步其联系人之前,可以通过任意时间跨度。在此期间,其他用户可能已经更新了这些联系人的子集。
一般情况下,运行良好,但我从未能解决这个基本问题:
如何毫无疑问地识别邮箱中的联系人对象?
PR_ENTRYID
,这个
联系人移动或财产变更
邮箱移动。目前我使用1(首选)和2(后退)的组合。但不可避免的是,有时用户会遇到同步到错误联系人的问题,因为没有给定的PR_ENTRYID
,但有两个具有相同的DB ID,其中选择了错误的一个。
有很多Outlook同步产品,所以我想这个问题必须是可以解决的。
答案 0 :(得分:2)
我有一个类似的问题需要克服一个内部Outlook插件来进行联系同步。我最终在Outlook对象中粘贴了一个数据库ID,并在执行同步时引用它。
这里的区别在于我们的系统有一堆重复项,以后会被用户解决。当它们合并时,我将删除旧记录并使用所有新信息和新ID更新outlook。
您可以进行模糊匹配以识别重复项,但重复分辨率是一个有趣的问题,主要是试验和错误。我们已成功地使用levenshtein距离算法实现“模糊”匹配逻辑,将名称和地址清理为哈希码。
祝你好运,我的同步经历有些痛苦。