About Notification-Based Store Indexing
|About Notification-Based Store Indexing|
A MAPI store provider can specify whether the MAPI Protocol Handler crawls and indexes messages in the store, or whether the store sends notifications to the indexer when there are messages to be indexed. The latter is known as notification-based indexing, and a store that supports notification-based indexing is a known as a pusher store.
A store provider that supports notification-based indexing sets the STORE_PUSHER_OK flag in the PR_STORE_SUPPORT_MASK property. The MAPI Protocol Handler or a client can get the PR_STORE_SUPPORT_MASK property to determine the characteristics of the store.
Whenever there is an attachment, folder, or a message to be indexed, the store provider generates a MAPI Uniform Resource Locator (URL) identifying the object to be indexed and sends it to the indexer. This MAPI URL is encoded in Unicode and must uniquely identify the object to the MAPI Protocol Handler. For more information about MAPI URLs, see About MAPI URLs for Notification-Based Indexing.
Because an indexer cannot always index everything before a shutdown occurs in a pusher store, the pusher store must persist what needs to be pushed. When a store provider sends a notification about an object that needs to be indexed, it specifies the notification type fnevIndexing in the ulEventType member of the NOTIFICATION structure. The info member of the NOTIFICATION structure contains an EXTENDED_NOTIFICATION structure. The store provider identifies the process in the PR_SEARCH_OWNER_ID property. It also identifies the process in the INDEX_SEARCH_PUSHER_PROCESS structure, and passes this information as part of the pbEventParameters member of the EXTENDED_NOTIFICATION structure. If the process is shut down or crashes, the MAPI Protocol Handler will be able to immediately detect that and stop indexing the pusher store.