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

Salesforce ナレッジでの SOQL および SOSL の使用

Salesforce Object Query Language (SOQL) を使用して、組織のナレッジデータから特定の情報を検索できます。SOQL は、広く使用されている SQL (Structured Query Language) の SELECT ステートメントに似ていますが、Salesforce 専用に設計されています。Salesforce Object Search Language (SOSL) を使用して、検索インデックスにテキストベースの検索クエリを作成できます。
ナレッジオブジェクト 制限
KnowledgeArticleVersion
  • 最良の結果を得るには、PublishStatus の 1 つの値で絞り込みます。各記事のすべてのバージョンを検索するには、PublishStatus フィルターを省略し、1 つ以上の主鍵 ID で絞り込みます。特定の記事のすべてのアーカイブバージョンを取得するには、SOQL フィルターで IsLatestVersionfalse に設定します。
  • API バージョン 46.0 以前の場合、デフォルトでは、クエリの実行時に PublishStatus で絞り込まないと、公開記事が返されます。API バージョン 47.0 以降の場合、Lightning Knowledge が有効のときは、ドラフト記事、公開記事、およびアーカイブ済み記事が返されます。
  • セキュリティをサポートするために、PublishStatus 値が Draft の記事は「ドラフト記事の表示」権限を持つユーザーにのみ表示されます。同様に、PublishStatus 値が Archived の記事は「アーカイブ済み記事の表示」権限を持つユーザーにのみ表示されます。
  • アーカイブ済み記事のバージョンは、Knowledge__kav オブジェクトに保存されます。アーカイブ済み記事のバージョンを照会するには、記事の Id を指定し、IsLatestVersion='0' を設定します。
  • KnowledgeArticleVersion オブジェクトでは、Apex SOQL ステートメントでバインド変数を使用できません。たとえば、次の SOQL ステートメントでは、コンパイルエラーが発生します。
    1final String PUBLISH_STATUS_ONLINE = 'Online';
    2List<Knowledge__kav> articles = [ 
    3SELECT Id FROM Knowledge__kav 
    4WHERE PublishStatus = :PUBLISH_STATUS_ONLINE 
    5];

    代わりに、次の動的 SOQL を使用します。『Apex 開発者ガイド』「動的 SOQL」を参照してください。

    1final String PUBLISH_STATUS_ONLINE = 'Online'; 
    2final String q = 'SELECT Id, PublishStatus FROM Knowledge__kav 
    3WHERE PublishStatus = :PUBLISH_STATUS_ONLINE';
    4List<Knowledge__kav> articles = Database.query(q);

SOQL と SOSL に関する一般的な情報は、『SOQL および SOSL リファレンス』を参照してください。