当前位置:K88软件开发文章中心编程语言非主流编程语言Apex → 文章内容

Apex - SOSL

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-15 16:30:53

由 kaikai0220 创建,youj 最后一次修改 2016-12-12 具有搜索功能是每个业务或应用程序的基本要求之一。为此,Salesforce.com提供了使用SOSL和SOQL的两种主要方法: SOSL: 在整个对象和字段上搜索文本字符串将通过使用SOSL来完成。这是Salesforce对象搜索语言。它具有在多个对象上搜索特定字符串的能力。SOSL语句评估sObjects的列表,其中每个列表包含特定sObject类型的搜索结果。结果列表始终以与在SOSL查询中指定的顺序相同的顺序返回。 SOQL: 这与SOQL几乎相同。您可以使用它从一个对象只获取一次对象记录。您可以编写嵌套查询,并从您要查询的父对象或子对象获取记录。我们将在本章中学习SOSL。我们将在下一章探讨SOQL。 SOSL查询示例考虑一个商业案例,我们需要开发一个程序,可以搜索指定的字符串。假设,我们想在Invoice对象的Customer Name字段中搜索字符串'ABC'。代码如下:首先,您必须在Invoice对象中创建一个客户名为“ABC”的记录,以便在搜索时获得有效的结果。//Program To Search the given string in all Object//List to hold the returned results of sObject generic typeList<list<SObject>> invoiceSearchList = new List<List<SObject>>();//SOSL query which will search for 'ABC' string in Customer Name field of Invoice ObjectinvoiceSearchList = [FIND 'ABC*' IN ALL FIELDS RETURNING APEX_Invoice__c (Id,APEX_Customer__r.Name)];//Returned result will be printedSystem.debug('Search Result '+invoiceSearchList);//Now suppose, you would like to search string 'ABC' in two objects, that is Invoice and Account. Then for this query goes like 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 typeList<List<SObject>> invoiceAndSearchList = new List<List<SObject>>();//SOSL query which will search for 'ABC' string in Invoice and in Account object's fieldsinvoiceAndSearchList = [FIND 'ABC*' IN ALL FIELDS RETURNING APEX_Invoice__c (Id,APEX_Customer__r.Name), Account];//Returned result will be printedSystem.debug('Search Result '+invoiceAndSearchList);//This list will hold the returned results for Invoice ObjectAPEX_Invoice__c [] searchedInvoice = ((List<APEX_Invoice__c>)invoiceAndSearchList[0]);//This list will hold the returned results for Account ObjectAccount [] searchedAccount = ((List<Account>)invoiceAndSearchList[1]);System.debug('Value of searchedInvoice'+searchedInvoice+'Value of searchedAccount'+searchedAccount);

Apex - SOSL