1. 検索を操作する

xConnect検索でサポートされている方法と演算子

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

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

xConnect SearchはIAsyncQueryable<T> すべてのメソッドを実装しているわけではなく、サポートされていないメソッドを使用しようとすると、Sitecore.XConnect.Search.YourLinqIsTooStrongExceptionまたはXdbModelExceptionの例外をスローします。次の表は、特に明記されていない限り、問い合わせ検索とインタラクション検索の両方に適用されます。

同期および非同期の拡張メソッドの概要については、xConnectクライアントAPIを参照してください。

Extension method and operator support matrix:

メソッド/演算子

xコネクト

IAsyncQueryable<T>

筆記

.Where()

はい

はい

.Any()

はい

はい

制限については、Azure Searchリストフィールドの制限 の節を参照してください。

.ToArray()

はい

はい

.ToList()

はい

はい

.Count()

はい

はい

.OrderBy()

はい

はい

.OrderByDescending()

はい

はい

.ThenBy()

はい

はい

.ThenByDescending()

はい

はい

.Skip()

はい

はい

「xConnect検索結果のページ分割」を参照してください。

.Take()

はい

はい

「xConnect検索結果のページ分割」を参照してください。

.FirstOrDefault()

はい

はい

.First()

はい

はい

.Single()

はい

はい

.SingleOrDefault()

はい

はい

== そして !=

はい

はい

< そして >

はい

はい

<= そして >=

はい

はい

&& そして ||

はい

はい

.GetBatchEnumerator()

はい

いいえ

.GetBatchEnumeratorSync()

はい

いいえ

.ToSearchResults()

はい

いいえ

.WithExpandOptions()

はい

いいえ

.AsEnumerable()

はい

いいえ

同期のみ。

Contains

いいえ

はい

StartsWith

いいえ

はい

EndsWith

いいえ

はい

ToString

いいえ

はい

Equals

いいえ

はい

メモ

Like()拡張方法はありません。

xConnect検索プロバイダーの制限事項

xConnect検索プロバイダーは、次のシナリオをサポートしていません。

Limitations of xConnect search providers:

シナリオ

制約

検索式内のカスタムメソッド

xConnectクライアントAPIは、LINQクエリ式内でのカスタム メソッド呼び出しをサポートしていません。 Sitecore.XConnect.Search.YourLinqIsTooStrongExceptionまたはXdbModelExceptionの例外を受け取ります。

null値の場合はSearch

ファセットがnullであるかどうかを確認することはできません。例えば:

var notWebVisits = client.Interactions.Where(c => c.WebVisit() == null);

カスタムイベントプロパティのTimespanによるSearch by Timespan

次のクエリ (カスタムTimespanプロパティを使用) はサポートされていません。

var interactions = await _client.Contacts.Where(c => c.Interactions.Any(i => i.Events.OfType<CampaignEvent>().Any(e => e.CustomCampaignTimespan == TimeSpan.Zero)));
手記

イベントでは、デフォルトのDurationプロパティを引き続き使用できます。この制限はイベントにのみ適用され、ファセットには適用されません。

First、FirstOrDefault、Last、LastOrDefault、またはLINQ式内のカウント

サポート対象外:

// First() inside a LINQ expression is unsupported:
var interactions = await _client.Interactions.Where(i => i.Events.First().EngagementValue == 11).ToList();

// FirstOrDefault() inside a LINQ expression is unsupported:
var contacts = await _client.Contacts.Where(contact => contact.Interactions.OrderByDescending(x => x.StartDateTime).FirstOrDefault().WebVisit().SiteName == "value");

// Last() inside a LINQ expression is unsupported:
var contacts = await _client.Contacts.Where(contact => contact.Interactions.Last().WebVisit().SiteName == value);

タイムスパン

OfType演算子とTimespanプロパティ (HoursMinutesSecondsなど) を組み合わせたクエリでは、Timespanを使用することはできません。

サポート:

events.OfType<SomeEventType>(e => e.SomeTypeTimeSpanField > TimeSpan.FromHours(2))

サポート対象外:

events.OfType<SomeEventType>(e => e.SomeTypeTimeSpanField.Hours > 10)

複雑なリストへのパスで名前が繰り返される

次のクエリは、両方のリストで同じであるためPath.To.Nestedサポートされていません。

i.Scores().Scores.Any(s=>s.Path.To.Nested.Any())
i.ProfileScores().ProfileScores.Any(s=>s.Path.To.Nested.Any())

Azure Searchプロバイダーの制限事項

次の制限は、xConnect検索のAzure Searchプロバイダーに固有です。

Limitations of Azure Search providers:

シナリオ

制約

contact.Interactions.Any()

Azure Searchプロバイダーは結合をサポートしていません。

詳細については、「検索およびSearch連絡先の操作」を参照してください (結合を使用する場合とない場合の例を含む)。

大事な

このAzure Search制限は、使用できるセグメンテーションルールに影響します。たとえば、Eメール・イベント (Eメールを開く、リンクをクリックするなど) で連絡先をフィルタリングすることはできません。

部分テキスト検索

Azure Searchプロバイダーではサポートされていません。例えば:

client.Contacts.Where(c => c.TextMatch("Mar"))

Azure Searchリスト フィールドの制限

次の表は、Azure Searchの 複合型の制限 に関連しています。

9.0アップデート2

9.0 Update 2では、複合型のリスト内での比較が改善されています。次に、これらのタイプのオペレーター・サポートを示します。

Azure Search list field support matrix for 9.0 Update 2:

種類

==

||

&&

!

>

>=

<

<=

!=

文字列、列挙型、またはGuidの入れ子になったリスト

はい

はい

はい

はい

いいえ

いいえ

いいえ

いいえ

いいえ

複合型またはその他の単純型のネストされたリスト ( intfloat

はい

はい

はい

はい

はい

はい

はい

はい

はい

次に、これらのタイプの演算子の使用例を示します。

Azure Search list field examples for 9.0 Update 2:

種類

文字列、列挙型、またはGuidの入れ子になったリスト

サポート対象外:

c=>c.SomeFacet().SomeList.Any(e=>e!="hello")
c=>c.SomeFacet().SomeList.Any(e=>e!="hello"||e!="world")

サポート:

c=>c.SomeFacet().SomeList.Any(e=>e=="hello")
c=>c.SomeFacet().SomeList.Any(e=>e=="hello"||e=="world")

複合型またはその他の単純型のネストされたリスト ( intfloat

サポート:

c=>c.SomeFacet().SomeList.Any(e=>e.Property1>2)
c=>c.SomeFacet().SomeList.Any(e=>e.Property1!=2)
c=>c.SomeFacet().SomeList.Any(e=>e.Property1==2&&e.Property2=="string")
c=>c.SomeFacet().SomeList.Any(e=>e.Property1==2||e.Property2=="string")

別のリストを含むリスト

ネストされたAny() を使用して、ネストされたリストに到達できます。

サポート:

someList.Any(v=>v.NestedList.Any(u=>u.SomeField==2))

Any()述語内の文字列、列挙型、またはGuidのネストされたリスト

Any()述部内で==||を使用できます。

サポート:

c=>c.SomeFacet().SomeList.Any(e=>e=="hello")
c=>c.SomeFacet().SomeList.Any(e=>e=="hello"||e=="world")

OfType<T>呼び出しに続くAny()

これは、正確な型または基本クラスのフィールドを参照します。

サポート:

i=>i.Events.OfType<Outcome>().Any(o=>o.MonetaryValue>10)
i=>i.Events.OfType<Outcome>().Any(o=>o.DefinitionId==someId)

9.0初期リリースと9.0アップデート1

次に、これらのタイプのオペレーター・サポートを示します。

Azure Search list field support for 9.0 Initial Release and 9.0 Update 1:

種類

==

||

&&

!

>

>=

<

<=

!=

Any()述語内のネストされたリスト

はい

いいえ

いいえ

いいえ

いいえ

いいえ

いいえ

いいえ

いいえ

次に、これらのタイプの演算子の使用例を示します。

Azure Search list field examples for 9.0 Initial Release and 9.0 Update 1:

種類

別のリストを含むリスト

ネストされたAny() を使用して、ネストされたリストに到達できます。

サポート:

someList.Any(v=>v.NestedList.Any(u=>u.SomeField==2))

Any()述語内のネストされたリスト

サポート対象外:

c=>c.SomeFacet().SomeList.Any(e=>e.Property1>2)
c=>c.SomeFacet().SomeList.Any(e=>e.Property1!=2)
c=>c.SomeFacet().SomeList.Any(e=>e.Property1==2&&e.Property2=="string")
c=>c.SomeFacet().SomeList.Any(e=>e.Property1==2||e.Property2=="string")

サポート:

MyListProperty.Any(v=>v.SomeField==2)
c=>c.SomeFacet().SomeList.Any(e=>e.Property1==2)||
c=>c.SomeFacet().SomeList.Any(e=>e.Property2=="string")

OfType<T>呼び出しに続くAny()

参照できるのは、指定された正確な型のフィールドのみであり、基本クラスを参照することはできません。

サポート対象外:

i=>i.Events.OfType<Outcome>().Any(o=>o.MonetaryValue>10)
手記

MonetaryValueOutcomeのプロパティであっても、Any()>) を併用することはできません。

i=>i.Events.OfType<Outcome>().Any(o=>o.DefinitionId==someId)
手記

DefinitionIdは基本クラスのプロパティであり、Outcomeのプロパティではありません。

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