Sunday, November 22, 2009

Microsoft Exchange 2007 Search Basics


Unlike Exchange 2003, Exchange Search is enabled by default in Exchange 2007 and is automatically applied to new databases as they are created. Exchange Search depends on a full-text indexing and each mailbox database in Exchange 2007 has a full-text index associated with it. However, this latest incarnation of Exchange server-side search not the status quo. Search for Microsoft Exchange 2007 has been rewritten.

Indexing content is now performed as messages arrive at the store and not on a set schedule. Certain attachment types are also indexed, most notably Word, Excel, PDF, PowerPoint and HTML files. To facilitate these changes, indexing is now more integrated with the Information Store Service. The result has been much improved indexing performance in Exchange 2007.

Exchange 2007 Search will show a few processes in Task Manager:

  • Microsoft.Exchange.Search.ExSearch.exe (MSSearch)
  • Msftefd.exe (filter daemon - similar to SQL Server 2005)
  • Msftesql.exe (core indexer)

These Exchange 2007 Search processes will throttle server-side full-text indexing when the Exchange Server needs resources for client access so the user experience is not negatively impacted. Otherwise, new messages get indexed within seconds of arrival. Searches using the server-side Exchange 2007 Search return results expeditiously.

Exchange 2007 Search is not the same as Instant Search in Outlook 2007, which is implemented with Windows Desktop Search (WDS) on the client. Outlook 2007 Instant Search requires either a .pst or Exchange cached mode (.ost). For the desktop client to benefit from Exchange 2007 Search they need to use either Outlook Web Access or a MAPI profile without Exchange cached mode (online mode).

Even though they are index-enabled by default, some databases may not need to be searched efficiently and therefore do not require an index. Full-text indexing is toggled on or off ($true or $false) from the Exchange Management Shell as follows:

>Set-MailboxDatabase <MailboxDatabaseName> -IndexEnabled $false

Also using PowerShell, the Test-ExchangeSearch cmdlet is used to verify the status of Exchange 2007 Search by creating a message and querying for that message and reporting back to the administrator.