올바른 검색 솔루션 선택
학습 목표
이 유닛을 완료하면 다음을 수행할 수 있습니다.
- 사용자 정의 검색 솔루션을 만들어야 하는 경우를 설명합니다.
- SOSL과 SOQL의 차이점을 설명합니다.
- 검색에 사용할 수 있는 API 프로토콜을 식별합니다.
Salesforce 방법으로 검색하기
가장 많이 사용하는 Salesforce 기능이 무엇인가요? 검색이라고 답변하셨다면, 정답입니다. 검색은 사용자들이 수천 개의 다양한 데이터 중에서 원하는 레코드 하나를 찾는 방법입니다.
이 Trailhead 모듈에서는 Salesforce 검색이 작동하는 방식과 사용자 정의 검색 솔루션의 적합성 여부를 결정하는 방법을 살펴보겠습니다. 또한 몇몇 일반적인 사용 사례에 대해 Salesforce API를 사용하여 사용자 정의 솔루션을 점프 스타트(또는 재구축)하는 방법에 대해 알아봅니다. 마지막으로 한층 더 관련성 높고 타게팅된 결과를 위해 검색 쿼리를 최적화하는 방법을 살펴보겠습니다. 즉, 검색 내용을 잘 이해하고 검색이 사용자의 생산성을 높이는 데 도움이 되는 방법을 알아볼 수 있습니다.
시작하기 전에 이 전체 검색이 실제로 작동되는 방식에 대해 이야기해 보겠습니다.
모든 레코드는 조직의 데이터베이스에 데이터 필드로 저장됩니다. 레코드를 업데이트하거나 생성하면 검색 엔진이 작동하여 데이터 사본을 만들고 컨텐츠를 토큰이라는 더 작은 조각으로 분할합니다. Salesforce는 이 토큰을 원래 레코드에 대한 링크와 함께 검색 색인에 저장합니다.
사용자 관점에서 검색 프로세스는 레코드가 생성될 때와 유사합니다. 사용자가 검색 필드(1)에 용어를 입력하면 검색 엔진이 해당 검색어를 토큰(2)으로 나눕니다. 이러한 토큰을 검색 색인 (3)에 저장된 레코드 정보와 일치시키고, 관련성 (4)에 따른 관련 레코드 순위를 지정하고, 사용자가 (5)에 액세스할 수 있는 결과를 반환합니다.
검색 색인에 대해 잠시 살펴보겠습니다. 조직 데이터베이스를 검색할 수 있는데 왜 토큰을 만드는 데만 매달리고 있으신가요? 아마 검색 색인을 통해 사용자에게 반환될 결과를 잘 알 수 있기 때문일 것입니다.
검색 색인 및 토큰을 통해 검색 엔진은 맞춤법 수정, 별명, 표제어 표기법 및 동의어 그룹 등 고급 기능을 적용할 수 있습니다. 이는 모두 결과 범위를 확장하기 위한 사용자 검색어 변형을 포함하는 레코드를 표시할 수 있다는 것을 의미합니다. 또한 의문이 있을 경우 표제어 추출(lemmatization)은 어렴풋한 레밍(lemmings)과 아무 관련이 없습니다. 다음과 같은 검색어 변형을 식별하고 반환하는 것과 관련이 더 큽니다(예: 검색 결과의 추가하다, 추가 중 및 추가됨).
또한 검색 색인은 관련성 순위를 조합에 도입할 수 있는 기회를 제공합니다. 이는 검색을 통해 사용자가 찾는 레코드를 찾고 순위를 매기는 방법입니다. 어떤 것이 포함되어 있을까요? 검색어 빈도, 순서 및 고유성, 레코드 활동, 액세스 권한을 비롯한 몇몇 다른 요인들이 있습니다.
비교해 볼까요? bunny slippers(토끼 슬리퍼)에 대한 데이터베이스 검색은 토끼 슬리퍼와 정확히 일치하는 레코드만 반합니다. 그러나 검색 색인을 사용하면 토끼 슬리퍼가 있는 레코드를 얻을 수 있습니다. 하지만 토끼 슬리퍼(복수) 또는 토끼 슬리퍼(단수)와 같은 유사한 용어로 더 많은 레코드를 보기도 합니다. 또한 슬리퍼 토끼 또는 토끼를 잘못된 철자(발생한 경우)로 입력했다고 가정해 보겠습니다. 순서가 맞지 않는 일치 및 맞춤법 검사를 사용할 경우에도 관련된 결과를 볼 수 있습니다. 그리고 모든 결과는 검색을 수행한 특정 사용자와 관련된 항목에 따라 정렬됩니다.
아마도 생각하고 계실 거에요. 즉시 사용 가능한 Salesforce 검색은 확실히 대부분의 사용 사례에서 적절하게 작동합니다. 그렇다면 어떤 경우에 맞춤형 솔루션이 필요할까요?
일반적으로, 조직에서 표준 Salesforce UI 대신 사용자 정의 UI를 사용하는 경우 사용자 정의 검색 솔루션이 필요합니다. 자체 개발 UI의 예로, 직원을 위한 고객 대면 기술 자료 또는 내부 제품 데이터 사이트가 있습니다. 사용자 정의 사용자 인터페이스를 구축하는 것은 모든 사람을 위한 것이 아니라 추가 작업이 필요하다는 점을 유의합니다. 좋은 소식은 사용자 정의 검색을 통해 Salesforce 검색의 일부 고급 기능을 계속 활용할 수 있다는 것입니다. 따라서 회사에서 사용자 정의 UI를 구축하기로 결정하고 사용자 정의 검색이 필요한 경우 이 모듈을 사용하는 것이 적합합니다.
이제 Salesforce Search 101을 다루었으므로 사용자 정의 검색 솔루션에서 레코드를 찾을 수 있도록 지원하는 API에 대해 살펴보겠습니다.
API를 사용하여 검색에 연결
두 가지 주요 API를 염두에 두세요. (잠시 후에 두 가지 추가 API에 대해 이야기하겠습니다.)
- SOQL(Salesforce 개체 쿼리 언어)
- SOSL(Salesforce 개체 검색 언어)
제공된 API에서 SOQL 및 SOSL 형식 텍스트 쿼리입니다. 그러나 유사점이 끝나는 위치입니다. SOQL 쿼리는 SELECT SQL 문과 동일하며 조직 데이터베이스를 검색합니다. 반면에 SOSL은 검색 색인에 대해 텍스트 기반 검색을 수행하는 프로그래밍 방식입니다. SOSL은 이전에 언급한 검색 색인의 모든 좋은 기능을 사용합니다.
SOQL과 SOSL도 구문이 다릅니다. 참조를 위해 리소스 섹션에 개발자 문서에 대한 링크를 추가했습니다. 하지만 여기에도 SOQL 또는 SOSL을 사용해야 하는 경우에 대한 일부 가이드라인이 있습니다.
데이터가 있는 개체 또는 필드를 알고 있고 다음 작업을 수행하려는 경우 SOQL을 사용합니다.
- 단일 개체 또는 서로 관련된 다중 개체에서 데이터를 검색합니다.
- 지정된 기준을 충족하는 레코드 수를 계산합니다.
- 쿼리의 일부로 결과를 정렬합니다.
- 숫자, 날짜 또는 확인란 필드에서 데이터를 검색합니다.
데이터가 상주하는 개체 또는 필드를 모르는 상태로 다음 작업을 수행하는 경우 SOSL을 사용합니다.
- 필드 내에 존재하는 특정 용어에 대한 데이터를 검색합니다. SOSL은 필드 내에서 여러 용어를 토큰화하고 이로부터 검색 색인을 구축할 수 있으므로 SOSL 검색이 더 빠르고 더 관련성 있는 결과를 반환할 수 있습니다.
- 여러 개체와 필드를 효율적으로 검색하고 개체는 서로 관련이 있을 수도 있고 그렇지 않을 수도 있습니다.
- 부서 기능을 사용하여 조직의 특정 부서에 대한 데이터를 검색하고 가능한 한 가장 효율적인 방법으로 찾을 수 있습니다.
이제 두 개의 추가 API 유형을 살펴보겠습니다.
먼저 추천 레코드 API를 살펴보겠습니다. 자동 추천, 즉각적인 결과, 자동 완성과 같은 별칭으로 추천 레코드를 이미 알고 있을 수 있습니다. 여러분은 아마 여기에 익숙할 수도 있습니다. 여러분이 가장 멋진 러닝화를 판매하는 웹사이트를 이용한다고 가정해 보겠습니다. 이 웹사이트는 기술 자료에 대해 맞춤화된 Salesforce 검색 솔루션을 사용하여 러너 커뮤니티를 장려합니다. 트레일 러닝을 하려면 어떤 신발을 사야 하는지 알고 싶을 수 있습니다. 검색창에 ‘trail running’을 입력하기 시작하면, 제목에 검색어가 포함된 기사에 대한 옵션이 표시됩니다.
검색 상자는 읽고 싶은 내용을 정확히 알고 있었습니다!
추천 레코드 검색 및 추천 기사 검색 REST 방법을 사용하여 사용자에게 동일한 즉각적인 만족을 제공할 수 있습니다. 이러한 메서드를 사용하는 방법에 대해 이후 상세히 살펴보도록 하겠습니다.
Salesforce에서 레코드를 찾는 방법에 대해 많은 내용을 다뤄보았습니다. 그러나 사용자가 작업하기 위해 액세스하는 Salesforce 외부에 저장된 레코드가 있는 경우 어떻게 될까요? Salesforce에는 Salesforce Federated Search라는 솔루션이 있습니다. Salesforce Federated Search는 사용자가 Salesforce Classic, Salesforce Console 또는 Lightning Experience 내부에 있으면서 Salesforce 외부에 저장된 항목을 검색할 수 있는 새로운 방법입니다.
Salesforce Federated Search를 사용하면 전역 검색 상자를 외부 검색 엔진으로 만들 수 있습니다. 연합 검색이 설정되면 사용자의 쿼리를 외부 소스를 검색하는 외부 엔진으로 전송합니다. 결과는 Salesforce 검색 결과에 바로 반환됩니다. Salesforce Federated Search 커넥터를 통해 이 작업을 수행합니다. 커넥터는 OpenSearch 사양을 사용하여 구축되었으므로 이 산업 표준을 준수하는 모든 검색 엔진을 연결할 수 있습니다.
Salesforce Federated Search는 Salesforce 검색 색인을 거치지 않습니다. 즉, Salesforce 고급 기능이 모두 적용되지 않습니다. 대신 외부 검색 공급자에 따라 결과가 반환되며, 역시 좋은 기능입니다.
다음으로 프로토콜을 사용하여 SOSL 및 SOQL 쿼리를 보내는 방법을 살펴보겠습니다.
프로토콜을 사용하여 쿼리 보내기
원하는 모든 아름다운 검색 용어를 작성할 수 있습니다. 그러나 REST, SOAP 또는 Apex와 같은 API 프로토콜을 사용하여 실제로 전송하지 않을 경우 소용이 없습니다.
일부 프로토콜은 다른 프로토콜보다 일부 API와 더 잘 어울립니다. 일반적으로 SOQL을 사용한 쿼리와 SOSL을 사용한 검색을 살펴보겠습니다.
- Query(REST) 및 query() (SOAP) - 지정된 개체에 대해 SOQL 쿼리를 실행하고 지정된 기준과 일치하는 데이터를 반환합니다.
- Search(REST) 및 search() (SOAP) - 조직의 데이터에 대해 SOSL 텍스트 문자열 검색을 실행합니다.
자동 추천 레코드, 기사 및 쿼리와 같은 다른 일반 검색 작업을 수행하기 위한 추가 리소스도 활용할 수 있습니다. 또한 SOSL이나 SOQL을 사용하지 않으려면 REST에서 매개변수로 처리된 검색을 고려합니다. URL의 검색 문자열 대신 URL에 매개변수(이름)를 사용합니다.
Apex의 경우 구문을 대괄호로 묶어 SOQL 또는 SOSL을 바로 사용할 수 있습니다. 검색 클래스를 사용하여 동적 SOSL 쿼리를 수행하고 검색 네임스페이스를 사용하여 검색 결과 및 추천 결과를 얻을 수도 있습니다.
이 유닛의 리소스 섹션에서 유용한 목록을 제공합니다. 이제 다음 유닛에서는 시작하는 데 도움이 되는 프로토콜 사용 방법을 살펴보겠습니다. 모든 정보와 예제를 보려면 개발자 문서를 참조하세요.
리소스
- SOQL 및 SOSL 참조
- REST API 개발자 안내서
- SOAP API 개발자 안내서
- Apex 개발자 가이드
- Salesforce 도움말
- 통합 검색 개발자 가이드