Managed Property and Crawled Property
Before diving deep into this, let us try to understand what these properties are at a high level. This will definitely help us for a better understanding.
A crawled property is content and metadata that is extracted from an item, such as a document or a URL, during a crawl. In simple, a crawled property is nothing but a metadata for a SiteColumn. It may not be handled by the developers, but with the help of a Managed Property, we can extract the metadata from Crawled Property. We cannot create the Crawled Property on our own. SharePoint will create the Crawled Property. We can create the Managed Property and Map the Managed Property to the Crawled Property. So that these Managed Properties will be used by the search queries, webparts etc.,
Now, coming to the step by step approach.
1. Let us do a Full Crawl. To do a full crawl, let me login to the Central Admin -> Search Service Application.
2. Click on the Content Sources. Select the Content Source and from the Context Menu, Select the “Start Full Crawl”
3. During the Crawl, the status will be “Crawling Full”
4. Wait until the Status becomes “Idle”. This means the Crawl Completed. View the logs for verification. If any error happened during the Crawl, it would have been captured on the Crawl Logs. But as of now, as we don’t have much on our farm, there is no error.
5. Once, the crawl completed, make sure the Crawled Property got created. For that, let us go to Central Admin -> Search Service Application-> Search Schema. Select the Crawled Property Link.
6. Search for a keyword called “Demo”. We will be able to see the following property.
7. Make sure that Managed Properties got created.
8. With this, our Managed Properties and Crawled Properties got created and mapped Properly. If the Managed Property does not created by default, then we need to create it manually using PowerShell Scripts.
9. We can use the below script to create the Managed Property.
#Get the Search SErvice Application
$cat = Get-SPEnterpriseSearchMetadataCategory –SearchApplication $searchapp –Identity $_.Category
#Get the Crawled Property First
$cp = Get-SPEnterpriseSearchMetadataCrawledProperty -SearchApplication $searchapp -name $_.CrawledPropertyName -Category $cat -ea silentlycontinue
#If the Crawled Property is not null, then go inside
# Check whether Managed Property already exists
$property = Get-SPEnterpriseSearchMetadataManagedProperty -SearchApplication $searchapp -Identity $_.ManagedPropertyName -ea silentlycontinue
Write-Host -f yellow "Cannot create managed property" $_.ManagedPropertyName "because it already exists"
$ExistingManagedProp = "Cannot create managed property " + $_.ManagedPropertyName + " because it already exists" | out-file "$path\ExistingManagedProp.txt" -append
# If already not there, then create Managed Property
New-SPEnterpriseSearchMetadataManagedProperty -Name $_.ManagedPropertyName -SearchApplication $searchapp -Type $_.Type -Description $_.Description
#Get the managed Property which Just now, we created
$mp = Get-SPEnterpriseSearchMetadataManagedProperty -SearchApplication $searchapp -Identity $_.ManagedPropertyName
#Map the Managed Property with the Corresponding Crawled Property
New-SPEnterpriseSearchMetadataMapping -SearchApplication $searchapp -ManagedProperty $mp –CrawledProperty $cp
Write-Host -f Yellow "The specified crawled property " $_.CrawledPropertyName " does not exists... Please check whether you have given valid crawled property name"
$a = "The specified crawled property " + $_.CrawledPropertyName + " does not exists... Please check whether you have given valid crawled property name"| out-file "$path\CrawledPropErrorLogs.txt" -append
10. The Managed Property should be Retrievable, Searchable, Queryable, Refinable etc., For that, we can execute the below script.
$searchapp = Get-SPEnterpriseSearchServiceApplication
$ManagedProperty = Get-SPEnterpriseSearchMetadataManagedProperty -SearchApplication $searchapp -Identity $_.ManagedPropertyName -ea silentlycontinue
$ManagedProperty.Searchable = $true
$ManagedProperty.Queryable = $true
$ManagedProperty.Sortable = $true
$ManagedProperty.Retrievable = $true
$ManagedProperty.Refinable = $true
$ManagedProperty.SafeForAnonymous = $true
write-host "The searchable, queryable, Sortable, Retrievable and Refinable for the managed property" $_.ManagedPropertyName "has been enabled successfully ...... Done !" -fore green
Write-Host -f Yellow "The specified managed property " $_.ManagedPropertyName " does not exists... Please check whether you have given valid managed property name"
$a = "The specified managed property " + $_.ManagedPropertyName + " does not exists... Please check whether you have given valid crawled property name"| out-file $OutputPath -append
Let us see about the Enable Library as a Catalog in Part6