0

Hi,

I need help with this method to create mapping between managed property and crawled property.

        public static void CreateMapping(SPWeb web, SearchAdmin.SearchObjectLevel level, string categoryName,
                                        
string managedPropertyName, string crawledPropertyName)
       
{
           
// Get search owner (search scope)
           
SearchAdmin.SearchObjectOwner searchOwner = new SearchAdmin.SearchObjectOwner(level, web);

            // Get search service app proxy
           
SearchAdmin.SearchServiceApplicationProxy searchProxy = GetSearchProxy(web);

            if (searchProxy == null)
           
{
               
return;
           
}

            // Get managed property
           
SearchAdmin.ManagedPropertyInfo managedProperty = searchProxy.GetManagedProperty(managedPropertyName, searchOwner);
           
SearchAdmin.ManagedProperty mp = new SearchAdmin.ManagedProperty();

            // If managed property exists
           
if (managedProperty != null)
           
{
               
//SearchAdmin.SearchObjectOwner SsaOwner = new SearchAdmin.SearchObjectOwner(SearchAdmin.SearchObjectLevel.Ssa, web);

                // Get crawled property by name
               
System.Collections.Generic.List<SearchAdmin.CrawledPropertyInfo> crawledProperties = searchProxy.GetAllCrawledProperties(crawledPropertyName, categoryName, 0, searchOwner);
               
//SearchAdmin.CrawledPropertyInfo crawledProperty = searchProxy.GetCrawledProperty(categoryGuid, crawledPropertyName, 0, false, searchOwner);

                // If crawled property exists
               
if (crawledProperties.Count > 0)
               
{
                   
// Set mapped crawled properties
                    managedProperty
.MappedCrawledProperties = new System.Collections.Generic.List<SearchAdmin.CrawledPropertyInfo>();
                    managedProperty
.MappedCrawledProperties.Add(crawledProperties[0]);

                    // Update managed property
                    searchProxy
.UpdateManagedProperty(managedProperty, searchOwner);
               
}
           
}
       
}

Any suggestion?

Thanks!

(Visited 49 times, 1 visits today)
Add a Comment