Поделиться через


Поиск фразы в теме во всех папках и хранилищах с помощью мгновенного поиска

В этом примере с помощью компонента мгновенного поиска выполняется поиск фразы в теме во всех папках и хранилищах с последующим отображением элементов в окне проводника.

Пример

Примечание.

Приведенный ниже пример кода представляет собой фрагмент из книги Программирование приложений для 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();
    }
}

См. также