使用“即时搜索”在所有文件夹和所有存储中搜索主题包含某短语的项
本示例使用"即时搜索"在所有文件夹和所有存储区中搜索主题中的某个短语,并在资源管理器窗口中显示相应项目。
示例
注意
下面的代码示例摘录自 Microsoft Office Outlook 2007 应用程序编程。
“即时搜索”是一项 Microsoft Outlook 功能,便于用户通过发出根据内容返回结果的查询来执行搜索。 您的查询一经处理后,即会在各种对象中返回结果,包括 Table 对象、 Items 集合和 Search 对象。 您可以使用 Microsoft Windows 桌面搜索提供的高级查询语法 (AQS),来编写使用即时搜索的代码。 AQS 是 Outlook 支持的三种查询语言之一。 它的功能很强大,但仅限于 Explorer 对象的 Search(String, OlSearchScope) 方法。 无法使用 AQS 限制 Table 或 Item 对象。 此外,AQS 查询返回的结果只能显示在 Outlook 用户界面中。 下表列出了 Outlook 支持的三种查询语言;不过,本主题介绍的是仅使用 AQS。
查询语言 |
说明 |
---|---|
AQS |
AQS 由 Windows 桌面搜索使用,是针对 Outlook 中的即时搜索功能的查询语言。 |
DASL |
DAV 搜索和定位 (DASL) 查询语言基于 Outlook 中 DASL 的 Microsoft Exchange 实现。 DASL 可用于在 Table 对象中返回结果。 |
Jet |
Jet 查询语言为 Outlook 提供简单的查询语言,它基于 Microsoft Jet Expression 服务。 Jet 用于为 Items 集合和 Table 对象的 Restrict 方法创建筛选器字符串。 |
在下面的代码示例中,DemoInstantSearch 获取所有存储中的全部邮件文件夹,这些存储已使用 Store 对象的 IsInstantSearchEnabled 属性启用索引。 然后,它使用 Explorer 对象的 Search 方法,筛选出主题中包含确切短语“Office 2007”的上月收到的所有项。 最后,搜索结果显示在独立资源管理器窗口中。
如果使用 Visual Studio 测试此代码示例,必须先添加对 Microsoft Outlook 15.0 对象库组件的引用,并在导入 Microsoft.Office.Interop.Outlook 命名空间时指定 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();
}
}