次の方法で共有


カスタム XML アイテム処理

最終更新日: 2010年6月22日

適用対象: SharePoint Server 2010

この記事の内容
XML マッパーの概要
XML コンテンツのクロール
形式の検出とアイテムの解析
xmlmapper.xml のカスタマイズ
xmlmapper.xml のファイル形式
XML マッパー構成の例

適用先: Microsoft FAST Search Server 2010 for SharePoint
カスタム XML アイテムの処理機能により、XML ベースのアイテムを管理プロパティにマップすることができます。一般的なシナリオでは、特定の XML 要素または XML 属性のコンテンツをクロールされたアイテムのメタデータとして使用します。たとえば、XML 要素から抽出したテキストをアイテムのタイトルとして使用します。

FAST Search Server 2010 for SharePoint のアイテム処理パイプラインには、クロールされた XML アイテムの特定部分からクロールされたプロパティを作成するための、オプションの XML マッパーのステージが含まれています。アイテム処理パイプラインで XML マッパーのステージを有効にする方法については、「オプションのアイテム処理の設定」を参照してください。

この記事では、次のとおり、ファイル構成 xmlmapper.xml を使用してプロパティ マッピングを構成する方法について説明します。

XML マッパーの概要

カスタマイズされた抽出と変換を必要とする XML ベースのドキュメントの Web およびファイル共有のクロールで、XML マッパーを使用します。パイプラインで XML マッパーを有効にすることにより、XML ベースのドキュメントであるクロールされたすべてのアイテムがマップされます。不明なコンテンツまたは複数のソースをクロールするために XML マッパーを使用しないでください。これは、構成が、クロールされた関連のない XML アイテムを非意図的に照合する場合があるためです。

XPath 1.0 を構成ファイル自体が持つ機能とともに使用して、マップする XML コンテンツのパーツを指定します。たとえば、複数の式の処理、文字列の区切り文字の追加、空白の削除を行うことができます。

マッピングのステートメントごとに、抽出された XML コンテンツがマップされるクロールされたプロパティを指定します。クロールされたプロパティの詳細については、「Plan the Index Schema (FAST Search Server 2010 for SharePoint) (英語)」と「インデックス スキーマ リファレンス」を参照してください。

XML コンテンツのクロール

パイプラインで XML マッパーを有効にすることにより、XML ベースのドキュメントであるクロールされたアイテムがすべてマップされます。したがって、既知の XML コンテンツのみをクロールするようにしてください。不明なコンテンツや複数のソースをクロールすると、他の目的でマップされた XML 要素を使用する、クロールされた XML アイテムを非意図的に照合する可能性があります。これによりインデックス内のメタデータが不正確になる場合があります。

XML コンテンツを FAST Search Server 2010 for SharePoint にクロールする方法は主に 2 つあります。

  • コンテンツ SSA (FAST Search Connector) を使用して XML ドキュメントをクロールします。これにより、Web サーバー、ファイル共有、SharePoint ドキュメント ライブラリから XML ドキュメントを取得できるようになります。

    注意

    クロールされたアイテムには、SharePoint リスト アイテム、複数の添付文書を持つ電子メール メッセージなど、複数のパーツを含めることができます。XML マッパーは、添付文書ではなく、クロールされたアイテムの最初の (主要な) パーツのみに表示される XML コンテンツをマップします。

  • FAST Search データベース コネクタを使用して、データベース テーブルの列から XML コンテンツを取得します (詳細については、Microsoft TechNet の「Crawling Database Content with the FAST Search Database Connector (英語)」を参照してください)。SQL ベースのクロール ルールでは、データベース テーブルの所定の列が data という名前の定義済みの内部プロパティにマップされるように指定できます。これは、インデックス コネクタからアイテム処理パイプラインに渡される場合も、ドキュメントの主要コンテンツを含む同じ内部プロパティになります。

    以下の例は、Product という名前のテーブルから data という名前の内部プロパティに、製品の XML ベースの正式な説明を取り出す単純なクロール ルールを示しています。

    SELECT Product.formalDescription AS data FROM Product
    
    重要重要

    data プロパティはクロールされたプロパティとしてマップできませんが、この場合、プロパティは、コンテンツが XML 型のドキュメントを表すものとして処理されます。「形式の検出とアイテムの解析」に記載されているコンテンツ タイプの考慮事項は、この種のアイテムにも適用されます。

形式の検出とアイテムの解析

アイテム処理パイプラインは、取得されたアイテムの実際のデータを分析することにより、コンテンツ タイプを検出します。アイテムに有効な XML が含まれている場合は、そのアイテムは XML として処理され、XML マッパーを使用して変換されます。一部の XML コンテンツには有効な XML 宣言がない場合があり、HTML で頻繁に使用される要素名が含まれている場合があります。その場合、クロールされた XML アイテムは HTML アイテムと間違われる可能性があります。この問題の解決策は、ファイル名拡張子として ".xml" を持つクロールされたアイテムに対する形式の検出を省略することです。省略するには、構成ファイル user_converter_rules.xml に以下の変換ルールを追加します。

<ConverterRules>
   <IFilter>
      <trust>
         <ext name=".xml" mimetype="text/xml" />
      </trust>
   </IFilter>
</ConverterRules>

この設定では、拡張子 ".xml" を持つファイルは必ず XML コンテンツとして処理されます。詳細については、「サード パーティ IFilter を使用するように FAST Search Server for SharePoint を設定する」を参照してください。

アイテム処理パイプラインは、すべてのアイテム (XML アイテムを含む) の主要な本文を body という名前の管理プロパティにマップします。つまり、すべての要素と属性のコンテンツが既定のフルテキスト インデックスと、body という名前の管理プロパティで検索できるようになります。これは、XMLMapper を使用して実行されるオプションのマッピングに加えて行われます。XML の一部 (または全部) がメタデータの場合、より細かいレベルでこのマッピングを管理する場合があります。XML のさらに詳細な部分 (ダミー値の場合でも) を body という名前の管理プロパティにマップできます。以下の手順は、このマッピングを実行する方法を指定します。

特定の XML コンテンツを body 管理プロパティにマップするには

  1. XML の特定部分を一意の名前を持つクロールされた新しいプロパティにマップする XML マッパー構成を指定します。

  2. body という名前の管理プロパティに対して、このクロールされたプロパティのマッピングを指定します。詳細については、Microsoft TechNet の「Manage Crawled Properties by Using Windows PowerShell (FAST Search Server 2010 for SharePoint) (英語)」を参照してください。

  3. body に、インデックスス スキーマで設定された MergeCrawledProperties フラグがあることを確認します。詳細については、TechNet の「Manage Managed Properties by Using Windows PowerShell (FAST Search Server 2010 for SharePoint) (英語)」を参照してください。

xmlmapper.xml のカスタマイズ

この構成ファイルを変更するには、FAST Search Server 2010 for SharePoint 管理ノードの FASTSearchAdministrators ローカル グループのメンバーである必要があります。

xmlmapper.xml を変更するには

  1. アイテム処理パイプラインで XML マッパーのステージが有効になっていることを確認します。詳細については、「オプションのアイテム処理の設定」を参照してください。

  2. 管理ノードで、%FASTSEARCH%\etc\config_data\DocumentProcessor\XMLMapper.xml ファイルが存在しない場合は作成します。

  3. テキスト エディターで %FASTSEARCH%\etc\config_data\DocumentProcessor\XMLMapper.xml を編集します。

  4. コマンド psctrl reset を実行して、システムで現在実行されているすべてのアイテム プロセッサをリセットします。

xmlmapper.xml のファイル形式

以下は、xmlmapper.xml ファイルの基本構造です。

<XMLPropertiesCreator>
  <propset>propertySetValue</propset> 
  <type>variantTypeValue</type> 
  <paragraph-sep>paragraphSeparatorValue</paragraph-sep>
  <XMLMappings>
    <Namespace name='namespaceName' uri='uriName' />
    <Mapping path='XPath' attr='propName' propset='GUID' type='varType'
             sep-str='separator' post-str='postString'
             ignore-whitespace='yes|no' strip-tags='yes|no'
             shallow='yes|no' mode='append|prepend|overwrite' />

    <SubTree base-path='basePath' >
      <Mapping path='XPath' attr='propName' propset='GUID' type='varType'
               sep-str='separator' post-str='postString'
               ignore-whitespace='yes|no' strip-tags='yes|no'
               shallow='yes|no' mode='append|prepend|overwrite' />
    </SubTree> 
    <MappingGroup base-path='basePath' attr='propName' propset='GUID' type='varType' 
                                    sep-str='separator' pre-str='preString' post-str='postString' 
                                    rec-sep-str='recSeparator' rec-pre-str='recPreString' rec-post-str='recPostString' 
                                    select='merge|first|longest' mode='append|prepend|overwrite' >
      <Mapping path='XPath' sep-str='separator' post-str='postString'
               ignore-whitespace='yes|no' strip-tags='yes|no' shallow='yes|no' /> 
    </MappingGroup>
  </XMLMappings>
</XMLPropertiesCreator>

個々の要素の XML 構文の詳細は、「XML マッパー スキーマ」を参照してください。

XML マッパー構成の例

この例では、以下の XML アイテムをコンテンツ入力と見なします。

<Document>
  <Title>My title</Title>
  <Date>2010-01-06T14:25:04Z</Date>
  <Size>128</Size>
  <Tags>
    <Tag>funny</Tag>
    <Tag>hilarious</Tag>
  </Tags>
  <Tutti>Hello</Tutti>
  <Frutti>World</Frutti>
</Document>

以下の例は、このようなアイテムから情報を抽出する XML マッパー構成を示します。

<XMLPropertiesCreator>
  <propset>d6ee4933-09c4-46e3-a5e4-b3787cb4a090</propset>
  <type>31</type>
  <XMLMappings>
    <Mapping attr="mytitle" path="//Title"/>
    <Mapping attr="mysize" path="//Size" type="3"/>
    <Mapping attr="mydate" path="//Date" type="64" propset="38c35ad5-69ee-4776-886f-95961a73d52d"/>
    <Mapping attr="mytags" path="//Tag" sep-str=";"/>
    <MappingGroup attr="mymulti" base-path="/Document" select="first">
      <Mapping path="Tutti"/>
      <Mapping path="Frutti"/>
    </MappingGroup>
  </XMLMappings>
</XMLPropertiesCreator>

この例では、XML マッパーは表 1 で示されるマッピングを適用します。

表 1. XML マッパーのマッピング

要素

マップ先

//Title

バリアント タイプが "31" に設定された propset "d6ee4933-09c4-46e3-a5e4-b3787cb4a090" 内の mytitle。

//Size

バリアント タイプが "3" に設定された propset "d6ee4933-09c4-46e3-a5e4-b3787cb4a090" 内の mysize。

//Date

バリアント タイプが "64" に設定された propset "38c35ad5-69ee-4776-886f-95961a73d52d" 内の mydate。

//Tag

バリアント タイプが "31" に設定された propset "d6ee4933-09c4-46e3-a5e4-b3787cb4a090" 内の mytags。複数の要素の一致はセミコロンで区切られます。

/Document/Tutti

バリアント タイプが "31" に設定された propset "d6ee4933-09c4-46e3-a5e4-b3787cb4a090" 内の mymulti。select="first" は、最初に一致した要素のみが照合されることを意味しています。この場合、テキスト "Hello" が抽出されます。

関連項目

概念

XML マッパー スキーマ

オプションのアイテム処理の設定