Поиск фразы в теме во всех папках и хранилищах с помощью мгновенного поиска
В этом примере с помощью компонента мгновенного поиска выполняется поиск фразы в теме во всех папках и хранилищах с последующим отображением элементов в окне проводника.
Пример
Примечание.
Приведенный ниже пример кода представляет собой фрагмент из книги Программирование приложений для Microsoft Office Outlook 2007.
Быстрый поиск — это функция Microsoft Outlook, позволяющая выполнять поиск с помощью запросов, которые возвращают результаты на основе содержимого. После обработки запроса результаты могут возвращаться в различные объекты, включая объект Table, коллекцию Items и объект Search. Код, использующий быстрый поиск, можно написать с помощью расширенного синтаксиса запросов (AQS), предлагаемого панелью поиска Microsoft Windows. AQS — один из трех языков запросов, поддерживаемых в Outlook. Он эффективен, но ограничен методом Search(String, OlSearchScope) объекта Explorer. С помощью языка AQS нельзя обеспечить ограничение для объектов Table или Item. Кроме того, результаты, возвращенные запросом AQS, могут отображаться только в пользовательском интерфейсе Outlook. В следующей таблице перечислены три языка запросов, поддерживаемые в Outlook, но в этой статье демонстрируется только использование языка AQS.
Язык запроса |
Описание |
---|---|
AQS |
Язык AQS используется в панели поиска Windows, а также в качестве языка запросов для компонента мгновенного поиска в приложении Outlook. |
DASL |
Язык запросов поиска и обнаружения DAV (DASL) построен на основе реализации Microsoft Exchange для языка DASL в приложении Outlook. Язык DASL можно использовать для возврата результатов в объекте Table. |
Jet |
Jet — это простой язык запросов для приложения Outlook, построенный на основе службы Microsoft Jet Expression Service. Язык Jet используется для создания строк фильтра для методов Restrict коллекции Items и объекта Table. |
В следующем примере кода процедура DemoInstantSearch получает все папки сообщений во всех хранилищах, для которых включена индексация с помощью свойства IsInstantSearchEnabled объекта Store. После этого с помощью метода Search объекта Explorer выполняется фильтрация всех полученных за последний месяц элементов, содержащих фразу "Office 2007" целиком в строке темы. В конце результаты поиска отображаются в отдельном окне проводника.
Если вы используете Visual Studio для тестирования этого примера кода, сначала добавьте ссылку на компонент Microsoft Outlook 15.0 Object Library и задайте переменную Outlook при импорте пространства имен Microsoft.Office.Interop.Outlook. Инструкция using не должна находиться непосредственно перед функциями в примере кода, но ее нужно добавить перед объявлением общедоступного класса. В следующей строке кода показано, как выполнить импорт и назначение в C#.
using Outlook = Microsoft.Office.Interop.Outlook;
private void DemoInstantSearch()
{
if (Application.Session.DefaultStore.IsInstantSearchEnabled)
{
Outlook.Explorer explorer = Application.Explorers.Add(
Application.Session.GetDefaultFolder(
Outlook.OlDefaultFolders.olFolderInbox)
as Outlook.Folder,
Outlook.OlFolderDisplayMode.olFolderDisplayNormal);
string filter = "subject:" +
"\"" + "Office 2007" + "\"" +
" received:(last month)";
explorer.Search(filter,
Outlook.OlSearchScope.olSearchScopeAllFolders);
explorer.Display();
}
}