[方法] 管理プロパティにマップされたクロール プロパティを取得する
エンタープライズ検索 管理オブジェクト モデルを使用して、管理プロパティにマップされたクロールプロパティの一覧にアクセスできます。
次の手順は、特定の管理プロパティにマップされたクロールプロパティの GUID とカテゴリを、コンソール アプリケーションから書き込む方法を示しています。
管理プロパティにマップされたクロール プロパティを取得するには
アプリケーションで、次の DLL への参照を設定します。
Microsoft.SharePoint.dll
Microsoft.Office.Server.dll
Microsoft.Office.Server.Search.dll
コンソール アプリケーションのクラス ファイルで、他の名前空間ディレクティブを含むコードの上部付近に次の using ステートメントを追加します。
using Microsoft.SharePoint; using Microsoft.Office.Server.Search.Administration;
共有サービス プロバイダ (SSP) の検索コンテキストの Schema オブジェクトを取得するには、以下のコードを追加します。検索コンテキストの取得方法の詳細については、「[方法] 検索サービス プロバイダに検索コンテキストを返す」を参照してください。
/* Replace <SiteName> with the name of a site using 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;
args[0] パラメータに指定された名前と一致する管理プロパティを取得します。
ManagedProperty mProp = properties[args[0]]
その管理プロパティのクロール プロパティの一覧を取得し、カテゴリ名とプロパティ GUID をコンソールに書き込みます。これを行うには、前の手順の "<…>" 文字を次のコードに置き換えます。
foreach (CrawledProperty cProp in mProp.GetMappedCrawledProperties(mProp.GetMappings().Count)) { Console.WriteLine(cProp.Name); Console.WriteLine(cProp.Propset); }
例
以下に、コンソール アプリケーション クラスのサンプルの完全なコードを示します。
前提条件
- 共有サービス プロバイダが既に作成されていることを確認します。
プロジェクト参照
このサンプルを実行する前に、コンソール アプリケーション コード プロジェクトに以下のプロジェクト参照を追加します。
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 ManagedPropertiesSample
{
class Program
{
static void Main(string[] args)
{
try
{
/*
Replace <SiteName> with the name
of a site using the SSP
*/
string strURL = "http://<SiteName>";
SearchContext context;
using (SPSite site = new SPSite(strURL))
{
Context = SearchContext.GetContext(site);
}
Schema sspSchema = new Schema(context);
ManagedPropertyCollection props = sspSchema.AllManagedProperties;
ManagedProperty mProp = properties[args[0]];
foreach (CrawledProperty cProp in mProp.GetMappedCrawledProperties(mProp.GetMappings().Count))
{
Console.WriteLine(cProp.Name);
Console.WriteLine(cProp.Propset);
}
}
catch(Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
}
}
See Also
タスク
[方法] 共有サービス プロバイダの管理プロパティを取得する