Apex SOSLを使ってオブジェクトに対してキーワード検索を行う方法

環境
Salesforce

構文
・FIND 検索キーワード IN ALL FIELDS RETURNING 検索対象オブジェクト名(取得項目)
・FIND 検索キーワード IN ALL FIELDS RETURNING 検索対象オブジェクト名1(取得項目,検索対象オブジェクト名2(取得項目

注意事項
1.SOQLとSOSLはガバナ制限が異なります。
SOQL実行回数→1トランザクションにつき、100回
SOSL実行回数→1トランザクションにつき、20回

2.SOSLはグローバル検索と同じ仕組みとなります。
1文字の検索は不可
検索するカラムが指定できない

使用例
searchWord変数に画面から入力した条件が設定され、Cft__cオブジェクトに対してキーワード検索を行います。

サンプルコード

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
public class SOSLExample {
public List<Cft__c> cftList {get;set;}
public String searchWord {get;set;} // 画面から入力した検索条件
public void exampleSoslExec(){
String sql = ‘FIND ‘*’ + searchWord + ‘*’ IN ALL FIELDS RETURNING Cft__c(Id, Name)’;
List<List<sObject>> resList = search.query(sql);
cftList = resList[0]:
}
}
public class SOSLExample { public List<Cft__c> cftList {get;set;} public String searchWord {get;set;} // 画面から入力した検索条件 public void exampleSoslExec(){ String sql = ‘FIND ‘*’ + searchWord + ‘*’ IN ALL FIELDS RETURNING Cft__c(Id, Name)’; List<List<sObject>> resList = search.query(sql); cftList = resList[0]: } }
 public class SOSLExample {
    public List<Cft__c> cftList {get;set;}
    public String searchWord {get;set;}    // 画面から入力した検索条件
    public void exampleSoslExec(){
        String sql = ‘FIND ‘*’ + searchWord + ‘*’ IN ALL FIELDS RETURNING Cft__c(Id, Name)’;
        List<List<sObject>> resList = search.query(sql);
        cftList = resList[0]:
    }
}

実行結果
検索結果はネストしたsObjectのリストに格納されます。

Apex

Posted by arkgame