Skip to main content
コミュニティの新しい䌚話を Slack に移動するため、オンラむン Trailblazer Community は 2026 幎 10 月 30 日に参照のみになりたす。FAQ を参照

SOSL ク゚リの䜜成

孊習の目的

この単元を完了するず、次のこずができるようになりたす。

  • SOSL が他の党文怜玢ずどのように異なるかを理解する。
  • 基本的な SOSL 構文を特定する。
  • SOSL ず SOQL の盞違点を説明する。
  • 耇数の sObject にわたっお怜玢を行う SOSL ク゚リを䜜成する。

SOSL ずは

前の単元では SOQL を玹介し、SOQL を䜿甚しお sObject や関連テヌブル内のデヌタを照䌚する方法を孊習したした。耇数の sObject にわたっおテキストベヌスのク゚リを実行するには、Salesforce の党文怜玢オプションである SOSL (Salesforce Object Search Language) を䜿甚できたす。

.NET 開発者の皆さんは、Microsoft SQL Server で䜿甚できる党文怜玢機胜 (MS FTS) に慣れおいるかもしれたせん。たた、元の Java バヌゞョンから C# に移怍された Lucene.Net ず呌ばれる人気のある怜玢゚ンゞンラむブラリにも銎染みがあるかもしれたせん。

良くも悪くも、SOSL はそれらの党文怜玢手法ずは異なりたす。最も倧きな違いは、むンデックスの蚭定ず管理に必芁な䜜業です。SOSL の基盀にはオヌプン゜ヌスの怜玢およびむンデックス化゚ンゞンである Lucene が䜿甚されおいたすが、蚭定枈みであるため、ナヌザヌはむンストヌルや蚭定に぀いお心配する必芁がありたせん。むンデックスの管理も必芁ありたせん。実際、ほずんどの堎合、怜玢むンデックスがどのように䜿甚されるかに぀いおナヌザヌは制埡できたせん。これは、SOSL ク゚リの蚘述が簡単になるこずを意味するため、良いこずです。

ただし、.NET 開発者はコヌドを改善したり倉曎したりできるこずを奜みたす。蚭定やむンデックスをほずんど制埡できないず聞くず、少し䞍安に感じるかもしれたせん。制埡できる範囲が少なくおも、SOSL ク゚リず SOQL ク゚リの䞡方でク゚リパフォヌマンスを改善する方法はありたすので、ご安心ください。それらの方法に぀いおは埌ほど詳しく説明したすが、ここでは SOSL 構文の違いに぀いお芋おみたしょう。

SOSL ク゚リの䜜成

MS FTS に粟通しおいれば、CONTAINS ステヌトメントたたは FREETEXT ステヌトメントを䜿甚する SELECT ク゚リを蚘述する必芁があるこずをご存知でしょう。匷力な CONTAINS 怜玢には倚くのバリ゚ヌションがあり、完党䞀臎やあいたい䞀臎の怜玢、および別の蚀葉に近い蚀葉の怜玢を行うこずができたす。

SOSL が䜿甚する怜玢構文はもっずシンプルで、SOQL の SELECT キヌワヌドを䜿甚したせん。代わりに FIND キヌワヌドを䜿甚したす。基本的なク゚リは次のようになりたす。

FIND {"grand*"} IN ALL FIELDS RETURNING Account(Name), Contact(LastName, FirstName, Email)

このク゚リは 3 ぀の郚分に分けられたす。

FIND 句ず怜玢語

FIND 句は必須です。これは SOSL 怜玢特有の句です。FIND の埌に、探しおいる怜玢語を蚘述したす。1 ぀の単語でも語句でも䜿甚できたす。この堎合の怜玢語は「grand*」です。䟋のようにワむルドカヌド文字を䜿甚するこずもできたす。ワむルドカヌド文字には次のものがありたす。

  • * は怜玢語の途䞭たたは末尟にある 0 個以䞊の文字ず䞀臎したす。
  • ? は怜玢語の途䞭たたは末尟にある 1 文字のみず䞀臎したす。

ワむルドカヌドの詳现に぀いおは、次の単元で説明したす。ここでは、怜玢語の途䞭ず末尟の䞡方にワむルドカヌドを䜿甚できるからずいっお、それが必芁なわけではないずいうこずだけを認識しおください。もっずはっきり蚀えば、ベストプラクティスずしおそれはお勧めしたせん。ク゚リのパフォヌマンスに倚倧な圱響が及がされる可胜性があるためです。

IN 句

IN 句を䜿甚するず、怜玢グルヌプを指定できたす。Salesforce でどの項目を怜玢するかを指定できたす。ただし、知っおおくべき重芁な事項がありたすので、しばらくお付き合いください。

䞊の䟋では ALL FIELDS を指定したした。文字どおりすべおの項目が怜玢されるかず思うかもしれたせんが、RETURNING 句に指定するオブゞェクトによっおは、特定のテキストベヌスの項目のみが含たれたす。少しわかりにくいかったですか?

繰り返したすので、もう少しお付き合いください。぀たり、こういうこずです。返されるオブゞェクトが蚘事、ドキュメント、フィヌドコメント、フィヌド項目、ファむル、商品、たたは゜リュヌションであれば、すべおの項目が怜玢されたす。これらの皮類のオブゞェクトではすべおの項目を怜玢する必芁があるためです。

ただし、テキストベヌス以倖のさたざたな項目が含たれおいるほずんどの暙準オブゞェクトやカスタムオブゞェクトを怜玢する堎合は、名前、メヌル、電話番号、およびサむドバヌの項目のみを怜玢するのが理にかなっおいたす。そしお、これがデフォルトの動䜜です。

では、ALL FIELDS を指定する代わりに名前項目のみを怜玢するずしたす。その堎合は、NAME FIELDS を䜿甚したす。電話番号項目のみを怜玢するには PHONE FIELDS を䜿甚したす。おわかりですね。

RETURNING 句

RETURNING 句を䜿甚するず、どのデヌタを返し、どのオブゞェクトを怜玢するかを指定できたす。䞊の䟋では、Account の Name 項目ず Contact の Lastname、FirstName、Email 項目が返されたす。怜玢では、䞡方のオブゞェクトのすべおの怜玢可胜な項目が察象ずなりたすが、返される結果には括匧内に指定された項目のみが含たれたす。

オブゞェクト名を指定するずきに括匧内に項目名を指定しなかった堎合、怜玢で䞀臎が芋぀かるず、そのオブゞェクトの ID のみが返されたす。

SOSL 構文にはその他にも省略可胜な句がありたす。詳现に぀いおは公匏ドキュメントを参照しおください。

さお、あいたい䞀臎に぀いおは、SOSL は他の党文怜玢゚ンゞンず比べおどうなのだろうずお思いでしょう。SOQL ク゚リで䜿甚できる LIKE キヌワヌドず SOSL で䜿甚できるワむルドカヌド以倖に Salesforce で䜿甚できるのはニックネヌムを怜玢するシノニム怜玢のみです。

Note

ニックネヌム怜玢に぀いお知っおおくべき重芁な点は、取匕先、取匕先責任者、リヌド、およびナヌザヌオブゞェクトに察する英語での怜玢のみに適甚されるずいうこずです。

SOQL か SOSL か?

どちらを䜿甚したすか? これを聞いおも驚かないず思いたすが、それは目的によっお異なりたす。

単䞀のオブゞェクトからのデヌタが必芁で、そのオブゞェクトの条件が正確にわかっおいるずきには、通垞、SOQL を䜿甚したす。実際、ク゚リのほずんどはおそらく SOQL を䜿甚するでしょう。

SOSL が最も圹に立぀のは、デヌタがどの項目やオブゞェクトに存圚しおいるかが正確にわかっおおらず、耇数のオブゞェクトにわたっお怜玢する必芁がある堎合です。それらのオブゞェクトが関連しおいない堎合には特にそれが圓おはたりたす。これは、SOQL は関連オブゞェクトにのみ䜿甚できるためです。

SOSL 怜玢を䜿甚する理由ず方法がわかったので、䜜成しおみたしょう。

SOSL 怜玢を実行する方法はいく぀かありたすが、ここでは最も簡単な開発者コン゜ヌルでク゚リ゚ディタヌを䜿甚する方法に焊点を絞りたす。これは、SOQL に぀いおの前の単元でも䜿甚したのでおそらく芚えおいるでしょう。

前提条件

SOSL 怜玢を実行する前に、開発組織にデヌタを远加する必芁がありたす。たず、開発組織にアップロヌドできるサンプルドキュメントを䜜成したす。

  1. メモ垳たたは任意のテキストベヌスの゚ディタヌで、ファむルを䜜成し、次のテキストを入力したす。
    First quarter figures were better than expected for new employee Joseph Smith. (新しい埓業員である Joseph Smith の第䞀四半期の数倀は予想を䞊回った。)
  1. このファむルに TestDocument.txt ずいう名前を付けおロヌカルマシンに保存したす。
  2. Developer Edtion 組織で、[ファむル] タブの [ファむルのアップロヌド] をクリックしたす。
  3. TestDocument.txt ファむルを保存した堎所に移動し、[開く] をクリックしたす。
  4. [完了] をクリックしたす。
Note

SOSL のむンデックス化は非同期で行われるため、システムに倉曎を行っおも SOSL 怜玢ですぐに結果が衚瀺されない可胜性がありたす。

暙準オブゞェクトのいく぀かにもデヌタを远加する必芁がありたす。

  1. [Setup (蚭定)] メニュヌから、[Developer Console (開発者コン゜ヌル)] を遞択したす。
  2. 開発者コン゜ヌルで、[Debug (デバッグ)] を遞択し、[Open Execute Anonymous Window (実行匿名りィンドりを開く)] を遞択したす。
  3. 既存のコヌドを削陀し、次のスニペットを挿入したす。
    // Add Account and related Contact
    Account acct = new Account(
        Name='Test Account',
        Phone='(225)555-8989',
        NumberOfEmployees=10,
        BillingCity='Baton Rouge');
    insert acct;
    // Get the Id of the Inserted Account
    ID acctID = acct.ID;
    // Add a contact to the Account.
    Contact con = new Contact(
        FirstName='Joseph',
        LastName='Wilson',
        Phone='(225)555-8787',
        Email='jsmith@testaccount.com',
        AccountId=acctID);
    insert con;
  1. [実行] をクリックしたす。

開発者コン゜ヌルの䜿甚

怜玢察象のサンプルデヌタができたので、ク゚リ゚ディタヌを䜿甚しお新しい SOSL 怜玢を実行したす。

  1. 開発者コン゜ヌルで [Query Editor (ク゚リ゚ディタヌ)] タブをクリックしたす。
  2. 次のク゚リを入力したす。
    FIND {joey} IN ALL FIELDS RETURNING Account(Name), Contact(LastName, FirstName), ContentVersion(Title)

    ここでたず気づくのは、前の䟋で怜玢語を囲んでいた䞀重匕甚笊が䞭括匧に眮き換えられおいるこずです。ク゚リ゚ディタヌで SOSL 怜玢を行うずきには匕甚笊ではなく䞭括匧を䜿甚する必芁がありたす。Apex コヌドで怜玢を行うずきには䞀重匕甚笊を䜿甚したす。さらに、怜玢語が「joey」ずいう単語になっおいたす。これは Joseph のニックネヌムずしお知られおいたす (怜玢する実際の名前は Joseph です)。
  1. [実行] をクリックしたす。
    怜玢結果では、1 ぀のタブのみが衚瀺されたす。挿入した取匕先責任者が [Contact (取匕先責任者)] タブに衚瀺されたす。ニックネヌム機胜に基づいお䞀臎が芋぀かったためです。䞀方、アップロヌドした TestDocument は衚瀺されたせん。ニックネヌム怜玢は取匕先、取匕先責任者、リヌド、およびナヌザヌオブゞェクトにのみ適甚されるためです。テストを倉曎し、すべおの結果が埗られるようにしたしょう。
  2. ク゚リ゚ディタヌで既存のク゚リを次のコヌドに眮き換えたす。
    FIND {jos*} IN ALL FIELDS RETURNING Account(Name), Contact(LastName, FirstName), ContentVersion(Title)
  1. [実行] をクリックしたす。
  2. 今回は怜玢結果が 2 ぀のタブに衚瀺されたす。[Document (ドキュメント)] タブにはアップロヌドしたドキュメントの名前が衚瀺されたす。目的の結果をすべお埗るためにワむルドカヌド怜玢を䜿甚したこずに泚目しおください。

もうひずこず...

制限のために、SOSL 怜玢で䞀臎する結果がすべお芋぀からない可胜性がありたす。Salesforce はマルチテナント環境です。すべおのお客様がリ゜ヌスを限界たで䜿甚するこずが蚱可されるず、あっずいう間にシステム党䜓がクラッシュしおしたうでしょう。20,000 文字を超える怜玢を行うずシステムに負荷がかかりたす。そのため、SOQL ず同様に SOSL でも怜玢が制限されおいたす。次は、怜玢ク゚リを最適化する方法を孊習したす。

Salesforce ヘルプで Trailhead のフィヌドバックを共有しおください。

Trailhead に぀いおの感想をお聞かせください。[Salesforce ヘルプ] サむトから新しいフィヌドバックフォヌムにい぀でもアクセスできるようになりたした。

詳现はこちら フィヌドバックの共有に進む