- Apex - Deployment
- Apex - Testing
- Apex - Debugging
- Apex - Batch Processing
- Apex - Governer Limits
- Apex - Trigger Design Patterns
- Apex - Triggers
- Apex - Invoking
- Apex - Security
- Apex - SOQL
- Apex - SOSL
- Apex - Database Methods
- Apex - DML
- Apex - Interfaces
- Apex - Objects
- Apex - Methods
- Apex - Classes
- Apex - Collections
- Apex - Loops
- Apex - Decision Making
- Apex - Constants
- Apex - Arrays
- Apex - Strings
- Apex - Variables
- Apex - Data Types
- Apex - Example
- Apex - Environment
- Apex - Overview
- Apex - Home
Apex Useful Resources
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Apex - SOSL
Every business or apppcation has search functionapty as one of the basic requirements. For this, Salesforce.com provides two major approaches using SOSL and SOQL. Let us discuss the SOSL approach in detail in this chapter.
SOSL
Searching the text string across the object and across the field will be done by using SOSL. This is Salesforce Object Search Language. It has the capabipty of searching a particular string across multiple objects.
SOSL statements evaluate to a pst of sObjects, wherein, each pst contains the search results for a particular sObject type. The result psts are always returned in the same order as they were specified in the SOSL query.
SOSL Query Example
Consider a business case wherein, we need to develop a program which can search a specified string. Suppose, we need to search for string ABC in the Customer Name field of Invoice object. The code goes as follows −
First, you have to create a single record in Invoice object with Customer name as ABC so that we can get vapd result when searched.
// Program To Search the given string in all Object // List to hold the returned results of sObject generic type List<pst<SObject>> invoiceSearchList = new List<List<SObject>>(); // SOSL query which will search for ABC string in Customer Name field of Invoice Object invoiceSearchList = [FIND ABC* IN ALL FIELDS RETURNING APEX_Invoice_c (Id,APEX_Customer_r.Name)]; // Returned result will be printed System.debug( Search Result +invoiceSearchList); // Now suppose, you would pke to search string ABC in two objects, // that is Invoice and Account. Then for this query goes pke this: // Program To Search the given string in Invoice and Account object, // you could specify more objects if you want, create an Account with Name as ABC. // List to hold the returned results of sObject generic type List<List<SObject>> invoiceAndSearchList = new List<List<SObject>>(); // SOSL query which will search for ABC string in Invoice and in Account object s fields invoiceAndSearchList = [FIND ABC* IN ALL FIELDS RETURNING APEX_Invoice__c (Id,APEX_Customer__r.Name), Account]; // Returned result will be printed System.debug( Search Result +invoiceAndSearchList); // This pst will hold the returned results for Invoice Object APEX_Invoice__c [] searchedInvoice = ((List<APEX_Invoice_c>)invoiceAndSearchList[0]); // This pst will hold the returned results for Account Object Account [] searchedAccount = ((List<Account>)invoiceAndSearchList[1]); System.debug( Value of searchedInvoice +searchedInvoice+ Value of searchedAccount + searchedAccount);
SOQL
This is almost the same as SOQL. You can use this to fetch the object records from one object only at a time. You can write nested queries and also fetch the records from parent or child object on which you are querying now.
We will explore SOQL in the next chapter.
Advertisements