Content indexing
is a built-in Exchange feature. Every Exchange server in your
organization supports and uses some type of indexing. To manage
indexing more effectively, use the techniques discussed in this section.
Content indexing enables fast searches and lookups through
server-stored mailboxes and public folders. Exchange Server supports
two types of indexing:
The Exchange Server storage engine automatically implements and
manages Exchange Search. Exchange Search is used with searches for
common key fields, such as message subjects. Users take advantage of
Exchange Search every time they use the Find feature in Microsoft
Office Outlook. With server-based mail folders, Exchange Search is used
to quickly search To, From, Cc, and Subject fields. With public
folders, Exchange Search is used to quickly search From and Subject
fields.
As you probably know, users can perform advanced searches in Office
Outlook as well. In Office Outlook 2010, all users need to do is click
in the Search box or press Ctrl+E to access the Search tools, click
Search Options, and then click Advanced Find. In the Advanced Find
dialog box, users can enter their search parameters and then click Find
Now. When Exchange Server receives an advanced query without Exchange
Store Search, it searches through every message in every folder. This
means that as Exchange mailboxes and public folders grow, so does the
time it takes to complete an advanced search. With standard searching, Exchange Server is unable to search through message attachments.
With Exchange Store Search, Exchange Server builds an index of all
searchable text in a particular mailbox or public folder database
before users try to search. The index can then be updated or rebuilt at
a predefined interval. Then, when users perform advanced searches, they
can quickly find any text within a document or attachment.
Note
Full-text indexes work only with server-based data. If users have
personal folders, Exchange Server doesn't index the data in these
folders.
A drawback of Exchange
Store Search is that it's resource-intensive. As with any database,
creating and maintaining indexes requires CPU time and system memory,
which can affect Exchange performance. Full-text indexes also use disk
space. A newly created index uses approximately 10 to 20 percent of the
total size of the Exchange database (and is directly related to what's
in the database's mailboxes). This means that a 1-TB database would
have an index of about 100 to 200 GB.
Each time you update an index, the file space that the index uses
increases. Don't worry—only changes in the database are stored in the
index updates. This means that the additional disk space usage is
incremental. For example, if the original 1-TB database grew by 1 GB,
the index could use up to 201 GB of disk space (up to 200 GB for the
original index and 1 GB for the update).
Managing Exchange Store Search
Exchange Server 2010 doesn't allow administrators to configure how indexing
works. With Exchange Server 2010, the Microsoft Search (Exchange)
service provides the Exchange Store Search of databases, and Microsoft
Exchange Search provides search services. These services provide
automated Exchange Store Search.
Full-text indexes are stored as part of the Exchange data files.
Because of this, whatever folder location you use for Exchange data
files will have a CatalogData-<GUID>
subfolder for each database, which contains all the Exchange Store
Search data for the related database and all its related databases. By
default, you'll find full-text index files for a database in the
%SystemDrive%\Program Files\Microsoft\Exchange Server\V14\Mailbox\DatabaseName\CatalogData-<GUID> folder.
Note
Exchange maintains full-text indexes as part of the database maintenance schedule.
Each database has an index. If you make a database copy, you are
also making an index copy. There's often no need to rebuild an index.
That said, as part of the recovery process for a mailbox or public
folder database, you might want to rebuild the related full-text index
catalog to ensure it is current. You might also want to rebuild the
full-text index after you've made substantial changes to a database or
if you suspect the full-text index is corrupted.
You can rebuild an index manually at any time. Exchange Server
rebuilds an index by re-creating it. This means that Exchange Server
takes a new snapshot of the database and uses this snapshot to build
the index from scratch. To manually rebuild an index, follow these
steps:
-
Log on to the Exchange server using an account with administrator privileges.
-
Open an administrator command prompt.
-
At the command prompt, stop the Microsoft Exchange Search service by typing net stop MsExchangeSearch.
-
Use Windows Explorer to delete the CatalogData-<GUID> subfolder, which contains the full-text index for the database.
-
At the command prompt, start the Microsoft Exchange Search service by typing net start MsExchangeSearch.
Tip
Alternatively, you can use the ResetSearchIndex.ps1 script. This
PowerShell script accepts the name of the database you want to work
with as an input parameter. To get started, enter cd
$env:ExchangeInstallPath\Scripts, then run the script by entering
.\ResetSearchIndex.ps1 followed by the name of the database, such as
.\ResetSearchIndex.ps1 EngineeringMailboxDb.
Exchange Discovery relies on Exchange Store Search for databases and
mailboxes within databases. You can enable or disable indexing for
individual databases by setting the -IndexEnabled parameter of the
Set-MailboxDatabase cmdlet to $true or $false, respectively. The
following example disables indexing of the Engineering database:
Set-MailboxDatabase "Engineering Database" -IndexEnabled $false
When you disable indexing of a database, you also prevent the
Exchange 2010 Discovery feature from returning messages from the
database or server.
You can disable indexing for all databases on a server by stopping
and disabling the Microsoft Exchange Search service. Here's an example
using the Exchange Management Shell where you stop and disable the
Exchange Search service on a remote server named Server18:
Stop-Service MSExchangeSearch -ComputerName Server18
Set-Service MSExchangeSearch -StartupType Disabled -ComputerName Server18
You can enable indexing for all databases on a server by enabling
the Microsoft Exchange Search service for automatic startup and
starting the service. An example using the Exchange Management Shell
follows:
Set-Service MSExchangeSearch -StartupType Automatic
-ComputerName Server18
Start-Service MSExchangeSearch -ComputerName Server18
When you disable indexing on a server, you also prevent Exchange Discovery for all databases on the server.