私は以下のようなシナリオがあります: 私はいくつかの関連情報が記載されたメールが送信されたメールボックスをチェックして情報を取得します。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索引問合せ文字列は常に少し遅れます。 –