Outlook联系人同步 - 如何识别要同步的正确对象?

问题描述:

我有一个Web应用程序,通过CDO将Outlook联系人同步到数据库(并返回)。数据库仅包含一次联系人(理论上至少在理论上发生双重联合),为联系人提供单点更改,而不管有多少用户在Outlook中具有特定联系人(如交互或类似产品)。Outlook联系人同步 - 如何识别要同步的正确对象?

同步过程不是自动的,而是用户初始化的。在用户决定同步他们的联系人之前,任意的时间间隔可以通过。与此同时,这些联系人的子集可能已由其他用户更新。

一般来说,这种运行良好,但我从来没有能够解决这个根本问题:

如何无疑识别邮箱中的联系人对象?

  1. 我不能靠PR_ENTRYID,在接触移动或 邮箱移动此 属性更改。
  2. 我不能依靠我自己的ID(例如DB 表ID),因为这些ID与联系人复制 。
  3. 我绝对不能依赖字段 如姓名或电子邮件地址,他们 可能会更改和更新。

目前我使用1(首选)和2(回退)的组合。但不可避免的是,有时用户会遇到同步到错误联系人的问题,因为没有给定的PR_ENTRYID,但有两个具有相同的数据库ID,其中选择了错误的联系人。

有一堆Outlook的同步产品,所以我想这个问题必须是可以解决的。

我有一个类似的问题可以通过内部的Outlook插件来解决,它可以实现联系人同步。我最终将数据库ID粘贴到Outlook对象中,并在做同步时引用该数据库ID。

这里的区别在于我们的系统有一堆重复项,稍后由用户解决。当他们合并时,我将删除旧记录并更新Outlook,并附带所有新信息以及新ID。

你可以做模糊匹配来识别重复,但重复的分辨率是一个有趣的问题,主要是试验和错误。我们已经成功实现了“模糊”匹配逻辑,使用levenshtein距离算法对名称和地址进行了清理,并将其清除为散列码。

祝你好运,我的同步经历有些痛苦。

+0

哦,男人,只是问题的年龄告诉我,这不是一个微不足道的问题。我也将数据库ID粘贴到联系人中,但是当联系人被重用(相同的位置,不同的人)时,或者当它被复制为为同一公司中的新联系人创建模板时,这并没有帮助。 – Tomalak 2008-10-13 16:30:23