search()
組織のデータをテキスト検索します。
構文
1SearchResult = connection.search(String searchString);使用方法
search() は、検索文字列に基づいてレコードを検索する場合に使用します。search() コールは、カスタムオブジェクトの検索をサポートしています。テキスト検索に使用される構文と規則に関するさまざまなトピックについては、『Salesforce SOQL および SOSL リファレンスガイド』を参照してください。
Attachment オブジェクトのような、特定のオブジェクトは、API 経由で検索できません。search() コールを使用してオブジェクトを検索するには、オブジェクトが検索可能に設定されている (isSearchable が true) 必要があります。検索可能かどうかを判断するために、クライアントアプリケーションは、オブジェクト上の describeSObjects() コールを呼び出して、searchable プロパティを確認することができます。
サンプルコード —Java
このサンプルでは、電話番号項目に指定の値が含まれる取引先責任者、リード、および取引先を返す SOSL クエリを search() コールに渡すことにより、このコールを実行します。次に、結果から sObject レコードを取得し、レコードタイプに応じて配列にレコードを保存します。最後に、返された取引先責任者、リード、および取引先の項目をコンソールに書き込みます。
1public void searchSample() {
2 try {
3 // Perform the search using the SOSL query.
4 SearchResult sr = connection.search(
5 "FIND {4159017000} IN Phone FIELDS RETURNING "
6 + "Contact(Id, Phone, FirstName, LastName), "
7 + "Lead(Id, Phone, FirstName, LastName), "
8 + "Account(Id, Phone, Name)");
9
10 // Get the records from the search results.
11 SearchRecord[] records = sr.getSearchRecords();
12
13 ArrayList<Contact> contacts = new ArrayList<Contact>();
14 ArrayList<Lead> leads = new ArrayList<Lead>();
15 ArrayList<Account> accounts = new ArrayList<Account>();
16
17 // For each record returned, find out if it's a
18 // contact, lead, or account and add it to the
19 // appropriate array, then write the records
20 // to the console.
21 if (records.length > 0) {
22 for (int i = 0; i < records.length; i++) {
23 SObject record = records[i].getRecord();
24 if (record instanceof Contact) {
25 contacts.add((Contact) record);
26 } else if (record instanceof Lead) {
27 leads.add((Lead) record);
28 } else if (record instanceof Account) {
29 accounts.add((Account) record);
30 }
31 }
32
33 System.out.println("Found " + contacts.size() + " contacts.");
34 for (Contact c : contacts) {
35 System.out.println(c.getId() + ", " + c.getFirstName() + ", "
36 + c.getLastName() + ", " + c.getPhone());
37 }
38 System.out.println("Found " + leads.size() + " leads.");
39 for (Lead d : leads) {
40 System.out.println(d.getId() + ", " + d.getFirstName() + ", "
41 + d.getLastName() + ", " + d.getPhone());
42 }
43 System.out.println("Found " + accounts.size() + " accounts.");
44 for (Account a : accounts) {
45 System.out.println(a.getId() + ", " + a.getName() + ", "
46 + a.getPhone());
47 }
48 } else {
49 System.out.println("No records were found for the search.");
50 }
51 } catch (Exception ce) {
52 ce.printStackTrace();
53 }
54}サンプルコード —C#
このサンプルでは、電話番号項目に指���の値が含まれる取引先責任者、リード、および取引先を返す SOSL クエリを search() コールに渡すことにより、このコールを実行します。次に、結果から sObject レコードを取得し、レコードタイプに応じて配列にレコードを保存します。最後に、返された取引先責任者、リード、および取引先の項目をコンソールに書き込みます。
1public void searchSample()
2{
3 try
4 {
5 // Perform the search using the SOSL query.
6 SearchResult sr = binding.search(
7 "FIND {4159017000} IN Phone FIELDS RETURNING "
8 + "Contact(Id, Phone, FirstName, LastName), "
9 + "Lead(Id, Phone, FirstName, LastName), "
10 + "Account(Id, Phone, Name)");
11
12 // Get the records from the search results.
13 SearchRecord[] records = sr.searchRecords;
14
15 List<Contact> contacts = new List<Contact>();
16 List<Lead> leads = new List<Lead>();
17 List<Account> accounts = new List<Account>();
18
19 // For each record returned, find out if it's a
20 // contact, lead, or account and add it to the
21 // appropriate array, then write the records
22 // to the console.
23 if (records.Length > 0)
24 {
25 for (int i = 0; i < records.Length; i++)
26 {
27 sObject record = records[i].record;
28 if (record is Contact)
29 {
30 contacts.Add((Contact)record);
31 }
32 else if (record is Lead)
33 {
34 leads.Add((Lead)record);
35 }
36 else if (record is Account)
37 {
38 accounts.Add((Account)record);
39 }
40 }
41
42 Console.WriteLine("Found " + contacts.Count + " contacts.");
43 foreach (Contact c in contacts)
44 {
45 Console.WriteLine(c.Id + ", " +
46 c.FirstName + ", " +
47 c.LastName + ", " +
48 c.Phone);
49 }
50 Console.WriteLine("Found " + leads.Count + " leads.");
51 foreach (Lead d in leads)
52 {
53 Console.WriteLine(d.Id + ", " +
54 d.FirstName + ", " +
55 d.LastName + ", " +
56 d.Phone);
57 }
58 Console.WriteLine("Found " + accounts.Count + " accounts.");
59 foreach (Account a in accounts)
60 {
61 Console.WriteLine(a.Id + ", " +
62 a.Name + ", " +
63 a.Phone);
64 }
65 }
66 else
67 {
68 Console.WriteLine("No records were found for the search.");
69 }
70 }
71 catch (SoapException e)
72 {
73 Console.WriteLine("An unexpected error has occurred: " +
74 e.Message + "\n" + e.StackTrace);
75 }
76}引数
| 名前 | 型 | 説明 |
|---|---|---|
| search | string | 検索されるテキスト式、検索される項目範囲、取得するオブジェクトと項目のリスト、および返すレコードの最大数を指定する検索文字列。詳細は、『Salesforce SOQL および SOSL リファレンスガイド』を参照してください。 |