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ではなく、“瞬時に答えが見つかるシステム”を作ることが、開発者の役割です。
