Bisher haben wir uns die Suche mit der Keywordquery, die Erstellung von Managed Properties und das zugehörige Mapping angeschaut. Damit hat man schon ein recht gut gefüllten Werkzeugkasten um eigene Suchabfragen durchzuführen. Standardmäßig wird für jedes Feld im Sharepoint, auch für selbst neu angelegte Felder, ein Crawled Property nach einem Full Crawl in der Suche an gelegt, sollte es nicht schon vorhanden sein.

Ab und zu kommt es jedoch auch vor, dass man eigene Crawled Properties erstellen möchte. So kann es sein, dass man ein Mapping auf ein Crawled Property machen möchte, vorher aber absichern muss, dass dieses existiert. Oder die eigene Lösung legt ein Feld in einer Liste an und man möchte es später abfragen, es existiert aber nicht zum Zeitpunkt der Aktivierung des Features.

Um ein Crawled Property zu erstellen, muss zunächst wieder eine Search Application vorhanden sein.

SPWebApplication webapp = properties.Feature.Parent as SPWebApplication;

SPServiceContext serviceContext = SPServiceContext.GetContext(webapp.ServiceApplicationProxyGroup, SPSiteSubscriptionIdentifier.Default);
SearchServiceApplicationProxy searchApplicationProxy = serviceContext.GetDefaultProxy(typeof(SearchServiceApplicationProxy)) as SearchServiceApplicationProxy;
SearchServiceApplicationInfo searchApplictionInfo = searchApplicationProxy.GetSearchServiceApplicationInfo();

SearchServiceApplication searchApplication = SearchService.Service.SearchApplications.GetValue<SearchServiceApplication>(searchApplictionInfo.SearchServiceApplicationId);
Schema searchSchema = new Schema(searchApplication);

AnschließendkannmaneinCrawledPropertyerstellen.

var category = searchSchema.AllCategories[propSetId];
crawledProperty = category.CreateCrawledProperty(propertyName, false, propSetId, (int)variant);
category.Update();

imageDabei ist die PropertySetID ein Guid welche die Category wiedergibt in der das Property erstellt werden soll. Diese können Sie in der Suchverwaltung erfahren indem Sie ein Crawled Property aus derselben Kategorie öffnen in welcher Ihres erstellt werden soll.

Die Property Set Id ist fest auf die Kategorie, also hier Sharepoint, gemappt. Achtung bei Werten welche in der Kategorie Basic erstellt werden. Dort gibt es mehrere Guids da scheinbar mehrere Kategorien mit dem Namen Basic existieren.

´

Die Variante ist ein Integerwert, welcher den Datentyp des Properties angibt. Unter Anderem sind folgende Werte sind möglich :

String = 31,
YesNo = 11,
Binary = 12,
Integer = 20,
Datetime = 64,
Taxonomic = 4127

Zum Schluss bitte ein Update der SearchApplication durchführen, sonst werden Ihre Änderungen erst nach dem Recycle des AppPools sichtbar.

searchApplication.Update();

Im letzten Teil der Serie werden wir mit den Unterschieden zur FAST Search befassen.

Die Artikel im Überblick:

Teil 1: Die Keywordquery

Teil 2: MossMan – Das Tool für die Suche

Teil 3: Erstellen und Mapping von Managed Properties für die Enterprise Search

Teil 4: Erstellen von Crawled Properties für die Enterprise Search

Teil 5: Was sich bei Verwendung der FAST Search ändert

Leave a comment

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Time limit is exhausted. Please reload the CAPTCHA.