我正在開發帶有自己的內容源的Sharepoint搜索。我有我的爬行屬性和我的託管屬性,並相應地在它們之間進行映射。 我也有動態屬性,例如用戶可以將該組屬性更改爲爬網,因此我可以在運行時從Sharepoint管理中心進行配置。 我使用下面的代碼來做到這一點:以編程方式設置CrawlProperty「包含在索引」值中(Sharepoint 2007)
private static void CreateProperty(string propertyName, Category category, ManagedPropertyCollection managedProperties)
{
var crawledProperty = category.CreateCrawledProperty(propertyName, false, Constants.CategoryId, 31);
crawledProperty.IsMappedToContents = true;
SetMapping(crawledProperty, managedProperties);
crawledProperty.Update();
}
private static void SetMapping(CrawledProperty cProp, ManagedPropertyCollection managedProperties)
{
ManagedProperty mProp = managedProperties.Create(cProp.Name, ManagedDataType.Text);
mProp.EnabledForScoping = true;
Mapping newMapping = new Mapping(cProp.Propset, cProp.Name, cProp.VariantType, mProp.PID);
MappingCollection mappings = mProp.GetMappings();
mappings.Add(newMapping);
mProp.SetMappings(mappings);
mProp.EnabledForScoping = true;
}
靜態屬性增加,而安裝時,動態屬性在管理中心manualy補充道。 我正在使用相同的代碼來在管理中心安裝和設置manualy時添加屬性。
問題是Sharepoint標誌「包含在索引中」的值用於抓取屬性。在這種情況下,安裝完成後,對於所有靜態爬網屬性,此標誌的值爲TRUE(是)。否則,對於動態屬性,此標誌爲FALSE(否)。我需要一直檢查標誌「包含在索引中」。
據我所知,CrawlProperty類的IsMappedToContents屬性可以響應「包含到索引」值,但它對我不起作用!
你有什麼想法做到這一點嗎?我做錯了什麼?
在此先感謝。