Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The Schema object in the Enterprise Search Administration object model provides access to the managed properties configured for the search service of a Shared Services Provider (SSP). For more information about the Schema object, see Managing Metadata.
The following procedure shows how to map a crawled property to a managed property.
To set up your application to use the Enterprise Search Administration object model
In your application, set references to the following DLLs:
Microsoft.SharePoint.dll
Microsoft.Office.Server.dll
Microsoft.Office.Server.Search.dll
In the class file of your console application, add the following using statements near the top of the code with the other namespace directives.
using Microsoft.SharePoint; using Microsoft.Office.Server.Search.Administration;
To verify that the required values for the property mapping were passed in the args[] parameter, and if not, display usage information
Create a function to write out usage information to the console window.
static void Usage() { Console.WriteLine("Map Crawled Property to Managed Property Sample"); Console.WriteLine("Usage: PropertyMappingSample.exe <cPropGUID> <cPropName> <cPropVType> <mPropPID>"); Console.WriteLine("<cPropGUID> - The GUID identifying the crawled property."); Console.WriteLine("<cPropName> - The crawled property name."); Console.WriteLine("<cPropVType> - The variant type of the crawled proeprty."); Console.WriteLine("<mPropName> - The name of the managed property."); }In the Main() function of the console application, add code to check if the number of items in the args[] parameter is equal to 4; if not (meaning that not all the values required to create the property mapping were passed in the args[] parameter), then call the Usage() function defined in the previous step.
if (args.Length != 4) { Usage(); return; }
To create the property mapping
Create local variables to hold the values for the property mapping passed in the args[] parameter using the following code.
Guid cPropGUID = new Guid(args[0]); string cPropName = args[1]; int vType = Convert.ToInt32(args[2]); string mPropName = args[3];Retrieve the Schema object for the search context of the SSP, using the following code. For more information about ways to retrieve the search context, see How to: Return the Search Context for the Search Service Provider.
/* Replace <SiteName> with the name of a site using the SSP */ SearchContext context; string strURL = "http://<SiteName>"; using(SPSite site = new SPSite(strURL)) { context = SearchContext.GetContext(site); } Schema sspSchema = new Schema(context);Retrieve the collection of managed properties by using the following code:
ManagedPropertyCollection properties = sspSchema.AllManagedProperties;Retrieve the managed property with the name specified in the args[3] parameter.
ManagedProperty mProp = properties[mPropName];Create an instance of the Mapping class using the values from the previous steps.
Mapping newMapping = new Mapping(cPropGUID, cPropName, vType, mProp.PID);Retrieve the collection of mappings for that managed property, check to see if the mapping created in Step 5 matches any existing mapping in the collection, and if so, display that information in the console using the following code.
MappingCollection mappings = mProp.GetMappings(); if(mappings.Contains(newMapping)) { Console.WriteLine("Mapping failed: requested mapping already exists."); return; }If the new mapping does not match any existing mapping in the collection, add the new mapping to the managed property's mapping collection with the following code.
mappings.Add(newMapping); mProp.SetMappings(mappings); Console.WriteLine(cPropName + "crawled property mapped to " + mProp.Name + " managed property."); return;
Example
Following is the complete code for the console application class sample.
Prerequisites
- Ensure that a Shared Services Provider is already created.
Project References
Add the following Project References in your console application code project before running this sample:
Microsoft.SharePoint
Microsoft.Office.Server
Microsoft.Office.Server.Search
using System;
using System.Collections;
using System.Text;
using Microsoft.Office.Server.Search.Administration;
using Microsoft.SharePoint;
namespace PropertyMappingSample
{
class Program
{
static void Main(string[] args)
{
try
{
if (args.Length != 4)
{
Usage();
return;
}
Guid cPropGUID = new Guid(args[0]);
string cPropName = args[1];
int vType = Convert.ToInt32(args[2]);
string mPropName = args[3];
/*
Replace <SiteName> with the name of
a site that uses the SSP
*/
string strURL = "http://<SiteName>";
SearchContext context;
using(SPSite site = new SPSite(strURL))
{
context = SearchContext.GetContext(site);
}
Schema sspSchema = new Schema(context);
ManagedPropertyCollection properties = sspSchema.AllManagedProperties;
ManagedProperty mProp = properties[mPropName];
Mapping newMapping = new Mapping(cPropGUID, cPropName, vType, mProp.PID);
MappingCollection mappings = mProp.GetMappings();
if(mappings.Contains(newMapping))
{
Console.WriteLine("Mapping failed: requested mapping already exists.");
return;
}
mappings.Add(newMapping);
mProp.SetMappings(mappings);
Console.WriteLine(cPropName + "crawled property mapped to " + mProp.Name + " managed property.");
}
catch (Exception ex1)
{
Console.WriteLine(ex1.ToString());
Usage();
}
}
static void Usage()
{
Console.WriteLine("Map Crawled Property to Managed Property Sample");
Console.WriteLine("Usage: PropertyMappingSample.exe <cPropGUID> <cPropName> <cPropVType> <mPropName>");
Console.WriteLine("<cPropGUID> - The GUID identifying the crawled property.");
Console.WriteLine("<cPropName> - The crawled property name.");
Console.WriteLine("<cPropVType> - The variant type of the crawled proeprty.");
Console.WriteLine("<mPropName> - The name of the managed property.");
}
}
}
See Also
Concepts
Managing Metadata
Getting Started with the Search Administration Object Model