一般的な使用事例での検索の作成
学習の目的
この単元を完了すると、次のことができるようになります。
- 1 つのオブジェクト内で検索する方法を説明する。
- 複数のオブジェクト内で検索する方法を説明する。
- カスタムオブジェクト内で検索する方法を説明する。
Cloud Kicks の 仕事
あなたが活気ある会社 Cloud Kicks の有能な新人開発者であるとします。Cloud Kicks が製造する極めて快適ながらスタイリッシュで環境に優しいカスタムスニーカーは、プロのランナーや週末のジョギング愛好家の注目を集めています。
あなたは、顧客向けのオンライン知識ベースと Cloud Kicks 従業員向けの社内商品 Web サイトを作成するように指示されました。すべてのデータは、Cloud Kicks Salesforce 組織から取得します。カスタマイズされた検索ソリューションが必要な仕事のようですね。このシナリオを使って、カスタマイズされた検索ソリューションのいくつかの一般的な使用事例について学習しましょう。特定の使用事例を使用する理由といくつかの例について説明します。
1 つのオブジェクト内での検索
Cloud Kicks は成長中の新興企業で、マーケティング部門は認知度を高めようと努力しています。数種のキャンペーンが開始され、Salesforce で追跡されています。マーケティングと営業は、あなたが作成中の社内商品 Web サイトで、キャンペーンのみを検索する方法を求めています。1 つのオブジェクトの検索は、ユーザーがすばやく 1 つのレコードタイプを検索する必要がある場合に最適です。そのような場合には、関係のないレコードをより分ける手間をかけたくないためです。
SOSL を使用して 1 つのオブジェクト内で検索する場合は、要求にオブジェクトを指定するだけです。極めて簡単でです。
FIND {term} RETURNING ObjectTypeName
この例では、term
がユーザーが入力する語句です。ObjectTypeName は、指定された sObject のみを含むように検索結果を制限します。したがって、ユーザーが 2016 年 3 月のメールキャンペーンを検索しようとすると、要求は次のようになります。
FIND {march 2016 email} RETURNING Campaign
次の単元では、RETURNING の優れた機能と、最良の結果を得るために検索を絞り込む方法について説明します。
複数オブジェクト内の検索
Cloud Kicks は顧客を大切にしています。そこで、ユーザーが質問をしたり情報を共有したりを 1 か所でできる Web サイトを構築したいと考えています。含まれる情報には、動画、記事、質問、PDF など、複数の種別があります。ただし、ユーザーにとっては、どの種別のコンテンツが表示されるかはどうでも良いことです。大切なのは、必要な情報を早く手に入れられることです。このような場合に複数オブジェクト検索が役立ちます。レコードタイプがユーザーにとって重要でないため、複数のオブジェクトを同時に検索できます。あるいは、実はユーザーが、結果に複数のオブジェクト種別が表示されることを望んでいる場合もあるでしょう。
SOSL ではごく簡単に別のオブジェクトを追加できます。カンマ区切りリストを追加するだけです。
FIND {term} RETURNING ObjectTypeName1, ObjectTypeName2, ObjectTypeNameYouGetTheIdea
例のシナリオに戻ると、Cloud Kicks のある顧客が、リサイクル素材で作られた靴はあるだろうかと考えたとします。その場合は、オンライン知識ベース検索で、検索語に一致する複数のオブジェクトが結果に返されるように設定します。
FIND {recycled materials} RETURNING Product2, ContentVersion, FeedItem
RETURNING 要素でオブジェクトを指定しなければ、結果に表示されない点に留意します。
カスタムオブジェクト内の検索
Salesforce には、お客様が使用できる標準オブジェクトが多数用意されています。けれども、Cloud Kicks はカスタムシューズに特化した企業のため、当然カスタムオブジェクトが必要になります。特にあなたが興味を持っているのは、最新のカスタムオブジェクトの Merchandise (商品) です。このオブジェクトには、Cloud Kicks の全商品のスタイル、ID、色、素材、名前、価格に関する情報が含まれています。営業、配送など、Cloud Kicks 社内の多くのユーザーがこの情報にアクセスする必要があります。
そこで、構築中の社内商品 Web サイトに、Merchandise (商品) カスタムオブジェクトのみを検索する検索ボックスを追加します。SOSL 検索でカスタムオブジェクトを指定する特別な方法があるわけではありません。他の標準オブジェクトと同様に、sObject 名を指定して、__c サフィックスを追加します。
FIND {pink hi\-top} RETURNING Merchandise__c
SOQL
SOSL について説明してきましたが、SOQL はどうでしょうか? SOQL は、1 つのオブジェクトの検索で、検索する項目がわかっていて、検索語が項目に完全に一致し (部分一致や順不同一致は含みません)、数値、日付、またはチェックボックス項目データが必要で、数件の結果のみを探している場合に使用します。(SOQL を使用すべき状況の完全リストについては、前の単元を参照してください。)
このモジュールですでに取り上げた一般的な使用事例を見れば、SOQL の使用を避けるべき場合が多少わかるでしょう。次に例を示します。
- 1 つのオブジェクトの検索 — SOQL は、データがどの項目に存在しているかがわかっていている場合に使用できます。「march 2016 email」 に対して項目を指定しなかったため、SOQL よりも SOSL 検索が適しています。一般的に、クエリで対象項目を指定しない場合は、SOSL を使用します。
- 複数オブジェクトの検索 — SOQL では互いに関連付けられている複数のオブジェクトからのみデータを取得できるため、SOQL での複数オブジェクトの検索は制限されています。シナリオでは、オブジェクトは関連していなかったため、SOSL が適しています。
- カスタムオブジェクトの検索 — 1 つのオブジェクトの検索の場合と同じように、SOQL でもカスタムオブジェクトを検索できます。ただし、検索語「pink hi-top」(ピンクのハイトップ) のデータがどの項目に存在しているかを指定しませんでした。さらに、SOQL では、インデックスではなくデータベースに対して検索を行います。そのため、実際に「pink sneaker hi-top」(ハイトップのピンクのスニーカー) を含むレコードがあっても、SOQL では適切な結果が返されません。