Newer Version Available
Salesforce ナレッジ記事の推奨
ユーザが検索を実行する前に関連記事に移動するショートカットをユーザに提供します。Search.suggest(searchText, objectType, options) をコールして、ユーザの検索クエリ文字列にタイトルが一致する Salesforce ナレッジ記事のリストを返します。
推奨を返すには、Salesforce ナレッジを有効にします。Salesforce ナレッジの設定についての詳細は、『Salesforce Knowledge Implementation Guide』を参照してください。
次の Visualforce ページには、記事または取引先を検索する入力項目があります。ユーザが [推奨] ボタンを押すと、推奨されるレコードが表示されます。結果が 5 件より多い場合、[結果をさらに表示] ボタンが表示されます。結果をさらに表示するには、このボタンをクリックします。
1swfobject.registerObject("clippy.codeblock-0", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17<apex:page controller="SuggestionDemoController">
18 <apex:form >
19 <apex:pageBlock mode="edit" id="block">
20 <h1>Article and Record Suggestions</h1>
21 <apex:pageBlockSection >
22 <apex:pageBlockSectionItem >
23 <apex:outputPanel >
24 <apex:panelGroup >
25 <apex:selectList value="{!objectType}" size="1">
26 <apex:selectOption itemLabel="Account" itemValue="Account" />
27 <apex:selectOption itemLabel="Article" itemValue="KnowledgeArticleVersion" />
28 <apex:actionSupport event="onchange" rerender="block"/>
29 </apex:selectList>
30 </apex:panelGroup>
31 <apex:panelGroup >
32 <apex:inputHidden id="nbResult" value="{!nbResult}" />
33 <apex:outputLabel for="searchText">Search Text</apex:outputLabel>
34
35 <apex:inputText id="searchText" value="{!searchText}"/>
36 <apex:commandButton id="suggestButton" value="Suggest" action="{!doSuggest}"
37 rerender="block"/>
38 <apex:commandButton id="suggestMoreButton" value="More results..." action="{!doSuggestMore}"
39 rerender="block" style="{!IF(hasMoreResults, '', 'display: none;')}"/>
40 </apex:panelGroup>
41 </apex:outputPanel>
42 </apex:pageBlockSectionItem>
43 </apex:pageBlockSection>
44 <apex:pageBlockSection title="Results" id="results" columns="1" rendered="{!results.size>0}">
45 <apex:dataList value="{!results}" var="w" type="1">
46 Id: {!w.SObject['Id']}
47 <br />
48 <apex:panelGroup rendered="{!objectType=='KnowledgeArticleVersion'}">
49 Title: {!w.SObject['Title']}
50 </apex:panelGroup>
51 <apex:panelGroup rendered="{!objectType!='KnowledgeArticleVersion'}">
52 Name: {!w.SObject['Name']}
53 </apex:panelGroup>
54 <hr />
55 </apex:dataList>
56 </apex:pageBlockSection>
57 <apex:pageBlockSection id="noresults" rendered="{!results.size==0}">
58 No results
59 </apex:pageBlockSection>
60 <apex:pageBlockSection rendered="{!LEN(searchText)>0}">
61 Search text: {!searchText}
62 </apex:pageBlockSection>
63 </apex:pageBlock>
64 </apex:form>
65</apex:page>次のコードは、ページのカスタム Visualforce コントローラです。
1swfobject.registerObject("clippy.codeblock-1", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17public class SuggestionDemoController {
18
19 public String searchText;
20 public String language = 'en_US';
21 public String objectType = 'Account';
22 public Integer nbResult = 5;
23 public Transient Search.SuggestionResults suggestionResults;
24
25 public String getSearchText() {
26 return searchText;
27 }
28
29 public void setSearchText(String s) {
30 searchText = s;
31 }
32
33 public Integer getNbResult() {
34 return nbResult;
35 }
36
37 public void setNbResult(Integer n) {
38 nbResult = n;
39 }
40
41 public String getLanguage() {
42 return language;
43 }
44
45 public void setLanguage(String language) {
46 this.language = language;
47 }
48
49 public String getObjectType() {
50 return objectType;
51 }
52
53 public void setObjectType(String objectType) {
54 this.objectType = objectType;
55 }
56
57 public List<Search.SuggestionResult> getResults() {
58 if (suggestionResults == null) {
59 return new List<Search.SuggestionResult>();
60 }
61
62 return suggestionResults.getSuggestionResults();
63 }
64
65 public Boolean getHasMoreResults() {
66 if (suggestionResults == null) {
67 return false;
68 }
69 return suggestionResults.hasMoreResults();
70 }
71
72 public PageReference doSuggest() {
73 nbResult = 5;
74 suggestAccounts();
75 return null;
76 }
77
78 public PageReference doSuggestMore() {
79 nbResult += 5;
80 suggestAccounts();
81 return null;
82 }
83
84 private void suggestAccounts() {
85 Search.SuggestionOption options = new Search.SuggestionOption();
86 Search.KnowledgeSuggestionFilter filters = new Search.KnowledgeSuggestionFilter();
87 if (objectType=='KnowledgeArticleVersion') {
88 filters.setLanguage(language);
89 filters.setPublishStatus('Online');
90 }
91 options.setFilter(filters);
92 options.setLimit(nbResult);
93 suggestionResults = Search.suggest(searchText, objectType, options);
94 }
95}