2008-10-08 68 views
1

我有一個Web應用程序,通過CDO將Outlook聯繫人同步到數據庫(並返回)。數據庫僅包含一次聯繫人(理論上至少在理論上發生雙重聯合),爲聯繫人提供單點更改,而不管有多少用戶在Outlook中具有特定聯繫人(如交互或類似產品)。Outlook聯繫人同步 - 如何識別要同步的正確對象?

同步過程不是自動的,而是用戶初始化的。在用戶決定同步他們的聯繫人之前,任意的時間間隔可以通過。與此同時,這些聯繫人的子集可能已由其他用戶更新。

一般來說,這種運行良好,但我從來沒有能夠解決這個根本問題:

如何無疑識別郵箱中的聯繫人對象?

  1. 我不能靠PR_ENTRYID,在接觸移動或 郵箱移動此 屬性更改。
  2. 我不能依靠我自己的ID(例如DB 表ID),因爲這些ID與聯繫人複製 。
  3. 我絕對不能依賴字段 如姓名或電子郵件地址,他們 可能會更改和更新。

目前我使用1(首選)和2(回退)的組合。但不可避免的是,有時用戶會遇到同步到錯誤聯繫人的問題,因爲沒有給定的PR_ENTRYID,但有兩個具有相同的數據庫ID,其中選擇了錯誤的聯繫人。

有一堆Outlook的同步產品,所以我想這個問題必須是可以解決的。

回答

2

我有一個類似的問題可以通過內部的Outlook插件來解決,它可以實現聯繫人同步。我最終將數據庫ID粘貼到Outlook對象中,並在做同步時引用該數據庫ID。

這裏的區別在於我們的系統有一堆重複項,稍後由用戶解決。當他們合併時,我將刪除舊記錄並更新Outlook,並附帶所有新信息以及新ID。

你可以做模糊匹配來識別重複,但重複的分辨率是一個有趣的問題,主要是試驗和錯誤。我們已經成功實現了「模糊」匹配邏輯,使用levenshtein距離算法對名稱和地址進行了清理,並將其清除爲散列碼。

祝你好運,我的同步經歷有些痛苦。

+0

哦,男人,只是問題的年齡告訴我,這不是一個微不足道的問題。我也將數據庫ID粘貼到聯繫人中,但是當聯繫人被重用(相同的位置,不同的人)時,或者當它被複製爲爲同一公司中的新聯繫人創建模板時,這並沒有幫助。 – Tomalak 2008-10-13 16:30:23