Service Cloud ナレッジ開発ガイド:SOQL検索からカスタマイズまで実践解説

Service Cloudのナレッジは、設定や運用だけでなく「開発」によってさらに強力な仕組みに進化させることができます。特に、検索機能の最適化やApex/SOQLを活用したカスタマイズは、実務レベルで大きな差を生みます。

本記事では、ナレッジに関する開発視点のポイントを具体的に解説します。


1. ナレッジオブジェクトの基本

Salesforceのナレッジは、通常のオブジェクトとは少し異なる構造を持ちます。

主に使うのは以下:

・KnowledgeArticle(抽象オブジェクト)
・Knowledge__kav(実体)

実際にSOQLで扱うのは「Knowledge__kav」です。


2. SOQLでナレッジを検索する

基本的な検索クエリ:

SELECT Id, Title, Summary, UrlName
FROM Knowledge__kav
WHERE PublishStatus = 'Online'
AND Language = 'ja'

ポイント:

・PublishStatus = ‘Online’(公開済みのみ)
・Languageで言語制御


3. キーワード検索(LIKE)

簡易検索の場合:

SELECT Id, Title
FROM Knowledge__kav
WHERE Title LIKE '%エラー%'
AND PublishStatus = 'Online'

ただし、LIKE検索は精度が低く、パフォーマンスにも注意が必要です。


4. SOSLによる全文検索

より実用的なのはSOSLです。

FIND 'ログインエラー'
IN ALL FIELDS
RETURNING Knowledge__kav(Id, Title, Summary)

メリット:

・複数フィールド横断検索
・高速
・実務で使いやすい

実際の検索機能はほぼSOSLで作るべきです。


5. Apexでのナレッジ検索実装

簡単な例:

List<List<SObject>> results = [
    FIND :keyword
    IN ALL FIELDS
    RETURNING Knowledge__kav(Id, Title, Summary)
];

List<Knowledge__kav> articles = (List<Knowledge__kav>)results[0];

これで動的検索が可能になります。


6. データカテゴリで絞り込み

ナレッジの精度を上げるにはカテゴリ検索が重要です。

SELECT Id, Title
FROM Knowledge__kav
WHERE PublishStatus = 'Online'
WITH DATA CATEGORY Product__c ABOVE Laptop__c

これにより、特定カテゴリの記事だけ取得できます。


7. ケース連携(実務で重要)

ケース画面でナレッジを表示する実装例:

・ケースの「種別」「キーワード」を取得
・ApexでSOSL検索
・該当ナレッジを表示

これにより、オペレーターは即座に回答候補を確認できます。


8. よくある開発ミス

■ PublishStatusを指定しない
→ 下書きが混ざる

■ Language未指定
→ 多言語環境で事故

■ LIKE検索に依存
→ 検索精度が低い


9. パフォーマンス最適化

・SOSLを優先する
・不要フィールドを取得しない
・LIMITを設定

例:

SELECT Id, Title
FROM Knowledge__kav
WHERE PublishStatus = 'Online'
LIMIT 50

10. 応用:AI・自動提案

Einsteinと組み合わせることで:

・ケース内容から自動ナレッジ提案
・検索不要のUX実現

開発と組み合わせると強力です。


まとめ

ナレッジ開発のポイントは「検索精度」と「使いやすさ」です。

SOQLだけでなくSOSL、Apex、カテゴリ設計を組み合わせることで、実務で使える検索体験を作ることができます。

単なるFAQではなく、“瞬時に答えが見つかるシステム”を作ることが、開発者の役割です。