bing exchange online search

New Underlying Search Functionality in Exchange Online

Mentioned during Microsoft Ignite 2017, there is a new search functionality in place within Exchange Online. Not all mailboxes are able to make use of the new functionality, such as hit highlighting and search results being shown in-line with the results highlighted in context with the results. The reason that the functionality is not available is that the feature has not been rolled out to all mailboxes in the service. At Microsoft Ignite, a percentage of enabled mailboxes was announced, and of course this will change over time. So how can you tell if the functionality is enabled on your mailboxes.

The answer is to use Get-MailboxStatistics via Exchange Online Remote PowerShell. The Get-MailboxStatistics cmdlet returns two sets of values, one starting with BigFunnel, which is the new search functionality code name and also values returned starting MCDB, which is the new MetaCache Database feature also announced at Microsoft Ignite.



PS> Get-MailboxStatistics email@address| fl *funn*,*mcdb*
BigFunnelIsEnabled                             : False
BigFunnelUpgradeInProgress                     : False 
BigFunnelMaintainRefiners                      : False 
BigFunnelFilterTableTotalSize                  : 0 B (0 bytes) 
BigFunnelFilterTableAvailableSize              : 0 B (0 bytes) 
BigFunnelPostingListTableTotalSize             : 0 B (0 bytes) 
BigFunnelPostingListTableAvailableSize         : 0 B (0 bytes) 
BigFunnelLargePOITableTotalSize                : 0 B (0 bytes) 
BigFunnelLargePOITableAvailableSize            : 0 B (0 bytes) 
BigFunnelTotalPOISize                          : Unlimited 
BigFunnelMessageCount                          : 
BigFunnelIndexedSize                           : Unlimited 
BigFunnelPartiallyIndexedSize                  : Unlimited 
BigFunnelNotIndexedSize                        : Unlimited 
BigFunnelCorruptedSize                         : Unlimited 
BigFunnelStaleSize                             : Unlimited 
BigFunnelShouldNotBeIndexedSize                : Unlimited 
BigFunnelIndexedCount                          : 
BigFunnelPartiallyIndexedCount                 : 
BigFunnelNotIndexedCount                       : 
BigFunnelCorruptedCount                        : 
BigFunnelStaleCount                            : 
BigFunnelShouldNotBeIndexedCount               : 
BigFunnelMailboxCreationVersion                : 
MCDBBigFunnelFilterTablePercentReplicated      : 
MCDBBigFunnelLargePOITablePercentReplicated    : 
MCDBBigFunnelPostingListTablePercentReplicated : 
MCDBMessageTablePercentReplicated              : 
MCDBBigFunnelFilterTablePercentReplicated      : 
MCDBBigFunnelLargePOITablePercentReplicated    : 
MCDBBigFunnelPostingListTablePercentReplicated : 

In the above BigFunnelIsEnabled shows if the feature is on, and then the rest of the values will contain information such as the size of the index within the mailbox (as the index is stored within the mailbox and not separate as it is with Exchange Server 2013/2016 and how it was in Exchange Online before this feature).

The MetaCache Database is SSD based storage within Exchange Online and where the index s read from – so the MCDB* results show things like the replication status of the database across the servers in Exchange Online.

2013 exchange IAmMEC search

Rebuilding Search Catalogs on Exchange Server 2013

In Exchange 2010 there was a PowerShell script for rebuilding the search catalog. This is depreciated in Exchange 2013. TechNet contains instructions on copying the catalog from a working server in the DAG – but what about if the database is not a member of a DAG or all the catalog’s in the DAG are broken?

This blog post will attempt to answer this:

Ensure all Search Services are Running

If you cannot complete a search in OWA or you are using Outlook in Online mode (or searching in Outlook 2013 beyond the default one year of cached content) then you return to the server for the search to take place. Therefore on the server that is active for your mailbox database the following services need to be running:

  • RTM: Microsoft Exchange Search Service
  • CU1 and later: Microsoft Exchange Search Service and Microsoft Exchange Search Host Controller

Ensure that these services are running before attempting to complete a search.

Once they are running, check the health of the search catalog with the following cmdlet in Exchange Management Shell: Get-MailboxDatabaseCopyStatus

The last column will display the state of the index. Anything other than Healthy needs to be checked. Crawling as a response means the index is currently being created and updated.

Checking for Corrupt Search Catalogs

Run the Test-ExchangeSearch cmdlet to get back a set of results on the health of your search catalog. This will take a short while, as Exchange will write known content into the Health Mailboxes on each database and then query search for the words that it expects to find. Errors here such as Time out for test thread and Catalog State: FailedAndSuspended should be fixed.

If the mailbox database is part of a DAG and other working copies exist then you can reseed the catalog using Update-MailboxDatabaseCopy faileddb/server –CatalogOnly

If all the copies are failed then stop the services listed in the previous section and delete or rename the catalog folder and restart the services listed above. The search catalog will be rebuilt and will take some time.

The location of the search catalog is always a subfolder of the mailbox database file, and this folder can be found by running: Get-MailboxDatabase -Server servername | fl name,edbfilepath,guid

This will return the name, the path to the mailbox database and the database guid, and then all you need to do is navigate to the folder that contains the database and rename the folder with the GUID as the folder name. Any new name will do. If a folder does not exist of the GUID of the mailbox database then a new one will be created.

Start the services that you stopped above and shortly a new catalog folder will be created. Depending upon the size of the database, rebuilding the catalog could take some time. Run Get-MailboxDatabaseCopyStatus to see when the catalog has finished crawling. Crawling will take additional IO from your disks, and so it is recommended not to run these steps during the day when IO is required, unless fixing your search index is more important!