Azure Cognitive Searchのフィールドの種類

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

Sitecore Azure Cognitive Search内では、特定のフィールドまたはSitecoreフィールド タイプのデータ タイプを定義できます。つまり、Azure Cognitive Searchインデックスでフィールドを定義する方法を制御できます。デフォルトでは、Sitecoreはインデックスに保存されているフィールド名にフィールド タイプのサフィックスを追加します。これにより、Sitecoreで定義されたフィールドのうち、同じ名前でフィールド タイプが異なるフィールドに対して競合が発生しなくなります。論理名が同じでEDMの種類が異なるフィールドは、インデックス内の異なる物理フィールドに格納されます。

フィールド マッピングを構成するときは、2つの異なるレベルで適用する必要があります。特定のSitecoreフィールドまたはSitecoreフィールド タイプを .Netタイプにマッピングしたり、タイプをEDMフィールド タイプにmap.Netしたりすることもできます。EDMフィールドの種類は、Azure Cognitive Searchインデックス内でフィールドが格納されるデータ型です。

Sitecoreフィールド タイプを .Netタイプにマッピングする

Sitecore.ContentSearch.Azure.DefaultIndexConfiguration.configファイルでは、Sitecoreフィールド タイプを .Netフィールド タイプにマッピングする方法を確認できます。

たとえば、リッチ テキストのSitecoreフィールド タイプを .Netタイプにマッピングできます “System.String”

<fieldTypes hint="raw:AddFieldByFieldTypeName">
...
<fieldType fieldTypeName="rich text"  boost="1f" type="System.String" searchable="YES" retrievable="YES"  facetable="YES"  filterable="YES"  sortable="YES" settingType="Sitecore.ContentSearch.Azure.CloudSearchFieldConfiguration, Sitecore.ContentSearch.Azure" cloudAnalyzer="language" />
...
</fieldTypes>

また、特定のフィールドを .Netタイプにマップすることもできます。この設定は優先度が高く、フィールドタイプの設定を上書きします。

たとえば、“testfield1” という名前のフィールドを .Netタイプにマップできます"System.String"

<fieldNames hint="raw:AddFieldByFieldName">
...
<field fieldName="testfield1"  cloudFieldName="testfield1" searchable="YES"  retrievable="YES" facetable="YES"  filterable="YES"  sortable="YES"  boost="1f" type="System.String"   settingType="Sitecore.ContentSearch.Azure.CloudSearchFieldConfiguration, Sitecore.ContentSearch.Azure" />
...
</fieldNames>

.Net型からEDM型へのマッピング

Sitecore.ContentSearch.Azure.DefaultIndexConfiguration.configファイルでは、.Netフィールド タイプをEDMフィールド タイプにマップする方法を確認できます。

たとえば、.Netフィールド タイプ "System.Char" のフィールドを "Edm.String" フィールド タイプにマッピングできます。

<cloudTypeMapper type="Sitecore.ContentSearch.Azure.Schema.CloudSearchTypeMapper, Sitecore.ContentSearch.Azure">
        ...
             <maps hint="raw:AddMap">
              <map type="System.Char” cloudType="Edm.String" />
             </maps>
        ...
</cloudTypeMapper>

EDM型の型サフィックス

型サフィックスは、Azure Cognitive Searchインデックスの元のフィールド名に追加されます。 Sitecore.ContentSearch.Azure.DefaultIndexConfiguration.configファイルでは、接尾辞の値を定義する方法を確認できます。デフォルト値については、次の表を参照してください。

Original field name

Field type

Field name with suffix

field1

Edm.String

field1_s

field1

Collection(Edm.String)

field1_sm

field1

Edm.Boolean

field1_b

field1

Edm.Int32

field1_i

field1

Edm.Int64

field1_I

field1

Edm.Double

field1_d

field1

Edm.DateTimeOffset

field1_dt

field1

Edm.GeographyPoint

field1_gp

Sitecore Azure Cognitive Searchがデータを保存する方法

同じ名前でタイプが異なる2つのフィールドを持つアイテムについては、Sitecore Azure Cognitive Searchがデータを保存する方法の次の例を参照してください。

テンプレート定義には、たとえば、同じ名前のField1を持つ2つのフィールドを含めることができますが、フィールド タイプは異なります。次の例では、1行テキストIntegerです。

このテンプレートから、Test1という項目を作成し、2つのフィールドに異なる値を入力できます。

インデックスには、同じ名前のfield1という2つのフィールドがありますが、それらには異なるフィールド タイプが含まれていることがわかります。これらのフィールド タイプは、field1_l ( Edm.Int64フィールド タイプ) とfield1_s ( Edm.Stringフィールド タイプ) という異なるサフィックスで定義されます。サフィックスを使用すると、フィールドの種類が異なる重複するフィールド名がある場合の競合を回避できます。

この記事を改善するための提案がある場合は、 お知らせください!