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

Salesforce ナレッジ記事の推奨

ユーザが検索を実行する前に関連記事に移動するショートカットをユーザに提供します。Search.suggest(searchText, objectType, options) をコールして、ユーザの検索クエリ文字列にタイトルが一致する Salesforce ナレッジ記事のリストを返します。

推奨を返すには、Salesforce ナレッジを有効にします。Salesforce ナレッジの設定についての詳細は、『Salesforce ナレッジ利用ガイド』を参照してください。

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