連絡先の検索
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
このトピックでは、連絡先をクエリする方法を示します。各例では、client.GetBatchEnumerator() / client.GetBatchEnumeratorSync() を使用して 結果をページ分割します。結合に依存する例には、結合をサポートしていない検索プロバイダーにInteractionsCacheファセットを使用する同等の例があります。
xConnect検索 でサポートされている方法のリスト を参照してください。
IDによる連絡先の検索
IDによる検索はサポートされていません。連絡先のIDがわかっている場合は、コレクション データベースから連絡先を取得できます。
識別子のソースとタイプによる連絡先の検索
識別子はxDB Collectionデータベースの暗号化されたフィールドに保存され、インデックスは作成されません。識別子のソースまたはタイプで検索するか、識別子と識別子ソースを使用してxDB Collectionデータベースから連絡先を取得できます。
識別子ソースによる連絡先の検索
次の例は、Sourceプロパティの値がtwitterである少なくとも1つの識別子を持つすべての連絡先を取得する方法を示しています。結果は10個のバッチで返されます。連絡先ごとに、ソースtweeterを持つ新しい識別子が追加され、古い識別子は削除されます (識別子は編集できません)。操作は、約200のバッチでxConnectに送信されます。
識別子タイプによる連絡先の検索
次の例では、少なくとも1つの既知の識別子を持つすべての連絡先が返されます。
ファセットプロパティ値による検索
次の例では、ジョブ タイトルがProgrammer Writerのすべての連絡先が返されます。結果にファセットを含めるには、次に示すように .WithExpandOptionsメソッドを使用する必要があります。
PII機密データのインデックスを作成していない場合、PII機密とマークされたファセットまたはファセットプロパティで検索することはできません。たとえば、連絡先の名と姓はPIIセンシティブとしてマークされます。
コンタクトファセットの有無による検索
null値を検索することはできません。ファセットが設定されているかどうかを判断するには、値を持つ可能性が最も高いプロパティを検索する必要があります。例えば:
-
優先メールアドレスは、EmailAddressListクラスのコンストラクタに渡す必要があります。したがって、PreferredEmail.SmtpAddressプロパティが設定されていることを信頼できます。
-
PersonalInformationクラスには必須プロパティはありません。したがって、設定されている可能性が最も高いプロパティを確認する必要があります。
次の例では、EmailAddressListファセットとPersonalInformationファセットを持つすべてのコンタクトが返されます。この例では、連絡先の名(PII機密データ)を検索できることに依存しています。
ネストされたファセットプロパティ値による検索
次の例では、ブリストルに住所があるすべての連絡先を返します。展開オプションは、結果とともにAddressListファセットを返すために使用されます。
AddressList.PreferredプロパティとAddressList.Othersプロパティを確認する必要があります。
ファセット拡張メソッドの使用
ファセット拡張メソッドは、クエリのコンテキストで使用できます。次の例は、.GetFacet<AddressList> メソッドと .Addresses() メソッドを使用してAddressListファセットを取得する方法を示しています。
コンタクト行動による検索
結合は、検索プロバイダーが結合をサポートしている場合にのみ可能です。要件に適した例を使用してください。
コンタクト検索とインタラクション検索を組み合わせて、インタラクションが特定の条件に一致するコンタクトを返すことができます。インタラクションを検索するには、インタラクション検索を使用します。
クエリは、クエリに一致するインタラクションを持つすべての連絡先を返します。ただし、expandオプションを使用して返されるインタラクションは、必ずしもクエリパラメータと一致するとは限りません。
インタラクション日で検索
次の例は、5日以上経過したインタラクションを持つコンタクトを取得する方法を示しています。さらに、展開オプションは、コンタクトの上位20件のインタラクションを返すために使用されます。これらのインタラクションは、必ずしもクエリパラメータと一致するわけではありません。
結合あり
次の例では、結合を使用して、1つ以上の一致するインタラクションを持つ任意のコンタクトを取得します。
結合なし
次の例では、InteractionsCacheファセットを使用して、1つ以上の一致するインタラクションを持つコンタクトを取得します。
インタラクションファセットによる検索
次の例は、特定のリファラーとインタラクションしたコンタクトを取得する方法を示しています。
結合あり
次の例では、結合を使用して、1つ以上の一致するインタラクションを持つコンタクトを取得します。
結合なし
次の例では、InteractionsCacheファセットを使用して、1つ以上の一致するインタラクションを持つコンタクトを取得します。
インタラクションイベントによる検索
次の例は、次の条件に一致するイベントをトリガーした連絡先を検索する方法を示しています。
-
イベントの種類の場所 Goal
-
イベント定義IDの場所 {29408b2d-52b6-4f39-96ca-039cd96f4624}
結合あり
次の例では、結合を使用して、1つ以上の一致するインタラクションを持つコンタクトを取得します。
結合なし
次の例では、InteractionsCacheファセットを使用しており、結合をサポートしていないプロバイダーを含むすべての検索プロバイダーでサポートされています。
最近のアクティビティから探す
EngagementMeasuresとKeyBehaviorCacheは、コンタクトの最近の行動に関する情報を格納する計算されたファセットです。これらのファセットのクエリは、両方とも連絡先に属しているため、結合は必要ありません。次の例は、EngagementMeasuresとKeyBehaviorCacheを使用して、最近の行動が特定の条件セットに一致する連絡先を返す方法を示しています。
エンゲージメント対策
次のクエリは、最近のインタラクションで30秒を超えるすべての問い合わせを返します。
キー動作キャッシュ
次のクエリは、定義IDが951fb783-5959-49a4-a1f3-ced3453725a4の施設で最近行われたインタラクションを持つすべての連絡先を返します。
拡張されたDateTimeプロパティによる検索
Sitecore 10.0以降では、ExpandDate属性をDateTimeファセット プロパティに追加して、DateTimeプロパティ値全体ではなく、日、月、年で検索できます。
次の例は、PersonalInformation.Birthdateプロパティを使用して9月に生まれたすべての連絡先を検索する方法を示しています。
PersonalInformation.Birthdateプロパティはnull許容です。null非許容の日付の場合は、.Value.Monthの代わりに .Monthを使用します。例えば:
部分テキスト検索
パーシャル テキスト検索は、SolrプロバイダーのxConnect検索でのみサポートされています。
Sitecore 10.0以降では、1つのクエリでコンタクト ファセットの設定可能なリストに対して部分的なテキスト検索を実行できます。一部のPersonalInformationファセット・データ (名、姓、Eメール・アドレスなど) は、デフォルトでSolrのtextmatchフィールドに追加されます。 構成を拡張して、追加のファセットを含めることができます。
次の例では、名、姓、またはメールアドレスが文字列で始まる連絡先を返しますMar
特定のファセットに対して部分的なテキスト検索を実行することはできません。
結果とページネーション
.GetBatchEnumerator() または .GetBatchEnumeratorSync() 拡張メソッドは、クエリから結果を返すための推奨される方法です。詳細については、ページネーションの概要を参照してください。
各方法で、1つのバッチの最大サイズはSitecore.XConnect.SearchExtensions.DefaultBatchSizeにハードコードされ、1000に設定されます。この値は現在構成できません。
|
非同期 | |
|
方式 |
筆記 |
|
awaitclient.GetBatchEnumerator() |
結果をページ分割する推奨される方法。 |
|
awaitclient.ToSearchResults() |
Skip()やTake()と併用してバッチサイズを制御できます。合計結果の数を返します。 |
|
awaitclient.ToList() |
Skip()とTake()で使用できます。連絡先のリストを返します。 |
|
同期 | |
|
方式 |
筆記 |
|
client.GetBatchEnumeratorSync() |
結果をページ分割する推奨される方法。 |
|
awaitclient.AsEnumerable() |
Skip()とTake()で使用できます。IEnumerable<Contact>を返します。 |
次の例は、各メソッドを使用して結果を返す方法を示しています。
結果の並べ替え
コンタクトのファセットまたはプロパティーで結果を並べ替えることができます。次の例では、EngagementMeasuresファセットのMostRecentInteractionStartDateTimeプロパティで連絡先を並べ替える方法を示します。
リストのプロパティで並べ替えることはできません。たとえば、連絡先のリストをインタラクションのStartDateTime順に並べ替えることはできません。
オプションを展開
.WithExpandOptions()メソッドを使用して、各コンタクトで返すファセットと関連するインタラクションを指定します。これらの展開オプションは、IDまたは識別子で連絡先を取得するときに使用するオプションと同じです。展開オプションを指定しない場合、コンタクトファセットまたは関連するインタラクションは返されません。
次の例では、次のようになります。
-
1つのコンタクトファセットを取得しています。
-
1つのインタラクション ファセットを取得する。
-
連絡先ごとに最大3つのインタラクションを取得します。
関連するインタラクション制限を1に指定すると、最新のインタラクションのみが返されるようになります。
関連するインタラクションはクエリの影響を受けません
次のクエリは、WebVisitファセットを持つインタラクションが少なくとも1つあるすべてのコンタクトを返します。このクエリは、コンタクトの上位30のインタラクションも返します。
Interactionsコレクションはクエリの影響を受けません。このクエリは、任意の時点から少なくとも1つの一致する連絡先を持つすべての連絡先を返します。ただし、一致につながるインタラクションは、必ずしもすべてのコンタクトのInteractionsプロパティに存在するわけではありません。
連絡先をカウントする
次の方法を使用して、連絡先データを返さずに、一致するすべての連絡先の数を返します。