У меня есть следующий сценарий: Я проверяю почтовый ящик, на который отправляются электронные письма с некоторой релевантной информацией, чтобы получить информацию от него.EWS API Search Filter не возвращает всю информацию
Я использую много поисковых фильтров, чтобы найти конкретный адрес электронной почты и получить правильный:
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));
Но теперь у меня есть проблема, что я не всегда найти правильные сообщения электронной почты. Я проверил это очень просто: я отправил сообщение на этот почтовый ящик, который я просматриваю, который выглядит полностью равным другому сообщению. В обоих случаях включена вся информация сверху. Но потом, после того, как я что-то изменил на своих поисковых фильтрах или что-то, я неожиданно увидел правильный результат, последнее сообщение.
Я понятия не имею, что может вызвать проблему, потому что она такая нежизнеспособная.
Спасибо, что помогло, по крайней мере, найти большинство предметов. Но похоже, что он кэширует результат, потому что снова: я вызываю поиск строки запроса, получил результат, который является актуальным, затем я отправляю другое электронное письмо, и теперь результат не включает последнее электронное письмо. Но когда я снова и снова заново ** **, я нахожу последний элемент, например, есть какой-либо способ кэширования, которого я не знаю. Возможно, вы знаете, как использовать этот флаг ResetCache в queryString, как это упоминается в MSDN? – Zumarta
Хотел добавить: похоже, есть какая-то задержка. Если я подожду как 1 или 2 минуты, я получаю правильный результат. Я не понимаю этого поведения, потому что Outlook, похоже, получает информацию напрямую, но результат EWS, похоже, не обновлен или отличается ... – Zumarta
Я обновил свой ответ на примере использования ResetCache. Индексирование содержимого - это фоновый процесс, поэтому запрос индексов Ci Indexes Query будет всегда немного отставать. –