Crawled property does not re-appear after deletion for a custom crawled property

I have deleted a custom crawled property related to a SharePoint column from the Search Administration > Search Schema > Crawled properties

After that,  I performed a full crawl. Once done, I checked crawled properties availability but I did not found the crawled property related to my SharePoint column, that’s the problem.

After some investigations, I discovered that CTS (Content Transformation Service) maintains an in-memory cache of crawled properties.  And on subsequent crawls, it skips properties that are already in the cache. This design is for performance reasons. Since extracting crawled properties and updating them in schema is an intensive operation, CTS is designed this way so that only new crawled properties are crawled on subsequent attempts thus resulting in a much faster throughput in terms of crawl speed.  This design also helps in reducing roundtrips to multiple databases as the property reporter talks to both schema object model and search admin database.

So here’s how to get back the crawled properties.  There are two ways and these can be used as the scenario may be at your environments/deployments.

1. Restart search host controller services.

Open SharePoint 2013 Management Shell in admin mode and issue the command:

Restart-Service spsearchhostcontroller

This will restart all of the search services.

2. The above might not be ideal on environments where all search services are running on single server since it will cause a downtime for all search services (all noderunner.exe will be killed and spawned).  In this case, the specific content processing process can be killed (with a command as shown below) and it will be spawned again immediately.


PS C:\> Get-WmiObject Win32_Process -Filter "Name like '%noderunner%' and CommandLine like '%ContentProcessing%'" | %{ Stop-Process $_.ProcessId }