この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Newer Version Available

This content describes an older version of this product. View Latest

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                            &nbsp;
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}