我有以下情形: 我檢查郵箱,其中包含一些相關信息的郵件將被髮送到該郵箱以從中獲取信息。EWS API搜索篩選器不會返回所有信息
我用了很多的搜索過濾器來查找特定電子郵件,以獲得正確的一個:
var collection = new SearchFilter.SearchFilterCollection(LogicalOperator.And);
collection.Add(new SearchFilter.ContainsSubstring(ItemSchema.Body, "text1", ContainmentMode.Substring, ComparisonMode.Exact));
collection.Add(new SearchFilter.ContainsSubstring(ItemSchema.Body, "text2", ContainmentMode.Substring, ComparisonMode.Exact));
collection.Add(new SearchFilter.ContainsSubstring(ItemSchema.Body, "text3", ContainmentMode.Substring, ComparisonMode.Exact));
collection.Add(new SearchFilter.ContainsSubstring(ItemSchema.Body, "text4", ContainmentMode.Substring, ComparisonMode.Exact));
collection.Add(new SearchFilter.ContainsSubstring(ItemSchema.Body, "text5", ContainmentMode.Substring, ComparisonMode.Exact));
collection.Add(new SearchFilter.ContainsSubstring(ItemSchema.Body, "longer string 1", ContainmentMode.Prefixed, ComparisonMode.IgnoreCase));
但現在我有,我不總能找到正確的電子郵件的問題。我測試了這個非常簡單:我發送了一封郵件給我正在輪詢的郵箱,看起來完全等於另一封郵件。在這兩種情況下,都包含了上面的所有信息。 但是後來,我改變了我的SearchFilters或任何東西后,我突然看到正確的結果,最新的消息。
我不知道什麼可能會導致問題,因爲它非常非常。
謝謝,這有助於至少找到最多的項目。但似乎他正在緩存結果,因爲我再次調用查詢字符串,得到最新的結果,然後發送另一封電子郵件,結果不包含最新的電子郵件。但是當我再次搜索**時,我發現最新的項目,就像我不知道的任何緩存方式。你可能知道如何使用像MSDN中提到的queryString中的「ResetCache」標誌? – Zumarta
想追加:似乎有某種延遲。如果我等待1或2分鐘,我會直接得到正確的結果。我不明白這種行爲,因爲Outlook似乎直接獲取信息,但EWS結果似乎不是最新的或不同的...... – Zumarta
我已經使用ResetCache更新了我的答案。內容索引是一個後臺進程,因此Ci索引查詢字符串查詢將始終滯後一點。 –