Skip to main content

검색 결과 최적화

학습 목표

이 유닛을 완료하면 다음을 수행할 수 있습니다.

  • 더욱 더 표적화된 검색 결과를 반환하는 효율적인 텍스트 검색을 만드는 방법을 설명합니다.
  • 검색을 위한 자동 제안 기능을 만드는 방법을 설명합니다.
  • 관리자가 사용자에 대한 검색 결과를 향상시키기 위해 취할 수 있는 추가 작업을 나열합니다.

효율적인 텍스트 검색 생성

검색 쿼리는 비용이 많이 소요될 수 있습니다. 더 많은 데이터를 검색하고 더 많은 수의 결과를 반환할수록 전체 작업 속도가 느려질 수 있습니다.

느린 검색을 해결하는 방법은 무엇인가요? 두 가지의 기본 전략을 사용할 수 있습니다.

  • 검색 중인 데이터 제한
  • 반환할 데이터 제한

하지만 너무 많은 수고는 들이지 않아도 됩니다. 과하게 효율적일 경우 검색 유용성은 오히려 떨어질 수 있으니까요. 사용자가 레코드가 존재한다는 사실을 알고 있을 경우 record not found(레코드를 찾을 수 없습니다) 메시지가 표시되는 것을 원하지 않습니다.

기분 좋은 매체를 만들기 위한 권장 사항은 다음과 같습니다. 기본 개념을 이해하기 위해 SOSL 예제부터 시작하겠습니다.

검색되는 데이터를 제한하려면 IN SearchGroup을 사용합니다. 이름, 이메일, 전화번호, 사이드바 또는 모든 필드를 검색할 수 있습니다. 예를 들어 이메일만 검색하려면 이메일 필드만 검색합니다.

FIND {jsmith@cloudkicks.com} IN EMAIL FIELDS RETURNING Contact

이제 검색 결과에 대해 살펴보겠습니다. 물론 사용자는 모든 결과를 확인하고 싶어 합니다. 그러나 수천 개의 레코드가 있다면 다시 생각해봐야겠죠. 결과를 제한하는 방법 또는 최소한 더 작고 소화하기 쉬운 덩어리로 나눌 수 있는지 생각해 보세요.

SOSL로 다시 전환하는 동시에, RETURNING FieldSpec을 사용하여 반환되는 데이터를 지정할 수 있습니다. 마지막 유닛에서 사용했지만 여기에 포함된 고급 요소에 대해 살펴보겠습니다.

  • ObjectTypeName - 반환할 개체를 지정합니다.
  • FieldList - 반환할 필드를 지정합니다.
  • ORDER By - 결과를 정렬할 필드를 지정합니다. 오름차순 또는 내림차순을 지정할 수도 있습니다.
  • LIMIT n - 지정된 개체에 대해 반환되는 최대 레코드 수를 설정합니다.
  • OFFSET n - 시작 행 오프셋을 쿼리에서 반환된 결과 집합으로 설정합니다.

많은 정보를 얻을 수 있으며, 단계별로 살펴보겠습니다.

단계 목표
1 반환할 개체를 지정합니다.
FIND {Cloud Kicks} RETURNING Account
2 반환할 필드를 지정합니다.
FIND {Cloud Kicks} RETURNING Account(Name, Industry)
3 기본값인 오름차순으로 필드별 결과를 정렬합니다.
FIND {Cloud Kicks} RETURNING Account (Name, Industry ORDER BY Name)
4 반환되는 최대 레코드 수를 설정합니다.
FIND {Cloud Kicks} RETURNING Account (Name, Industry ORDER BY Name LIMIT 10)
5 결과에 시작 행 오프셋을 설정합니다.
FIND {Cloud Kicks} RETURNING Account (Name, Industry ORDER BY Name LIMIT 10 OFFSET 25)

이제 익숙해지셨으니 미리 정의된 특정 필드를 기준으로 레코드를 필터링하는 몇몇 WITH 구문을 시도해 보겠습니다. 결과를 미리 필터링할 경우 반환되는 결과가 줄어들고 성능은 향상됩니다. 또한 사용자는 여러 결과를 검색할 필요가 없어집니다. SOSL은 어떤 유형의 WITH 필터를 제공하나요? 다음과 같은 필터를 제공합니다.

리소스
WITH DIVISION
FIND {Cloud Kicks} RETURNING Account (Name, Industry)
    WITH DIVISION = 'Global'
WITH DATA CATEGORY 
FIND {race} RETURNING KnowledgeArticleVersion
    (Id, Title WHERE PublishStatus='online' and language='en_US')
    WITH DATA CATEGORY Location__c AT America__c
WITH NETWORK
FIND {first place} RETURNING User (Id, Name),
FeedItem (id, ParentId WHERE CreatedDate = THIS_YEAR Order by CreatedDate DESC)
WITH NETWORK = '00000000000001'
WITH PRICEBOOK
Find {shoe} RETURNING Product2 WITH PricebookId = '01sxx0000002MffAAE'

이제 이해가 되시나요? SOQL에서 작동하는 방식을 다룰 준비가 된 것 같네요. 좋은 소식은 작동 방식이 거의 동일하다는 것입니다. SOQL에는 SOSL과 동일한 작업을 수행하는 SELECT 아래에 유사한 구문이 있습니다. 데이터 범주 또는 네트워크별로 제한하는 방법을 포함한 전체 구문 목록은 개발자 문서에서 확인할 수 있습니다. 지금까지 살펴본 일부 구문에 대한 유용한 비교 표는 다음과 같습니다.

저는... SOSL SOQL
검색되는 데이터 제한 IN SearchGroup WHERE
응답에서 반환할 데이터 지정 Returning FieldSpec SELECT
결과 정렬 ORDER BYLIMITOFFSET ORDER BYLIMITOFFSET
데이터 범주별 필터링 WITH DATA CATEGORY WITH DATA CATEGORY

추천 결과 표시

첫 번째 유닛에서는 레코드 자동 추천과 트레일 러닝에 대한 정보 검색에 대한 첨단 기술을 살펴봤습니다. 그렇다면 이 개념을 다시 한 번 자세히 살펴보겠습니다.

즉, API를 사용하여 사용자가 검색창에 입력할 때 추천 항목이 표시되도록 할 수 있습니다. 추천 기능은 사용자가 입력하는 항목과 일치하는 제목이 있는 레코드를 반환합니다. 이 기능을 통해 사용자는 더 빠르게 원하는 장소로 안내합니다. 바로 검색의 최종 목적과 같죠, 그렇지 않을까요?

여기에서 REST 리소스로 이동하여 이 기능을 활용할 수 있습니다. 각 리소스에는 유사 구문과 매개변수가 있지만 사용 사례에 가장 적합한 항목을 사용합니다.

  • 추천 레코드 검색 - 이름이 사용자의 검색 문자열과 일치하는 추천 레코드 목록을 반환합니다. 추천 리소스는 전체 검색을 수행하기 전에 사용자가 관련 레코드로 직접 이동할 수 있는 바로가기를 제공합니다.
  • 제안된 기사 제목 일치 검색 - 제목이 사용자의 검색 쿼리 문자열과 일치하는 Salesforce Knowledge 기사 목록을 반환합니다. 사용자가 검색을 수행하기 전에 관련 기사로 바로 이동할 수 있는 바로가기를 제공합니다.
  • 사례에 대한 SObject 제안된 기사 - 사례에 대해 제안된 Salesforce Knowledge 기사 목록을 반환합니다.

추천 기능의 작동 방식의 예로, 추천 기사 제목 일치 검색 옵션을 사용해보겠습니다. 다음은 기본 구문이지만 사용 가능한 전체 매개변수 목록은 API 문서를 확인하세요.

/vXX.X/search/suggestTitleMatches?q=search string&language=article language&publishStatus=article publication status

이제 해당 구문을 사용하되 특정 예제를 사용합니다. 요청은 다음과 같이 표시됩니다.

/vXX.X/search/suggestTitleMatches?q=race+tips&language=en_US&publishStatus=Online

그리고 JSON 응답입니다.

{
  "autoSuggestResults" : [ {
    "attributes" : {
    "type" : "KnowledgeArticleVersion",
    "url" : "/services/data/v30.0/sobjects/KnowledgeArticleVersion/ka0D00000004CcQ"
    },
  "Id" : "ka0D00000004CcQ",
  "UrlName" : "tips-for-your-first-trail-race",
  "Title" : "race tips",
  "KnowledgeArticleId" : "kA0D00000004Cfz",
  "isMasterLanguage" : "1",
  } ],
  "hasMoreResults" : false
}

관리자와 협력

검색 결과 최적화는 팀 스포츠입니다. 다행히 여러분은 최고의 지원을 제공할 수 있는 담당자인 MVP 관리자를 알고 있습니다. 다음은 관리자와 협력하여 검색 결과를 개선하는 데 있어 몇몇 이지 포인트를 얻기 위한 플레이입니다.

첫 번째 단계는 검색에서 동일하게 취급되는 단어나 구가 있는 동의어 그룹을 설정하고 최적화하는 것입니다. 동의어 그룹에 속한 용어 하나를 검색하면 그룹의 모든 용어에 대한 결과가 반환됩니다. 예를 들어 USB에 대한 검색은 USB, thumb drive, flash stickmemory stick을 포함하는 동의어 그룹의 모든 용어에 대한 결과를 반환합니다. 여러분은 이미 동의어 그룹의 가치를 확인하셨을 수 있습니다. 사용자는 하나의 용어를 사용하여 검색할 수 있으며 “적절한“ 검색어를 사용하지 않더라도 원하는 결과를 얻을 수 있습니다. 제품 이름을 변경하지 않아도 됩니다.

동의어 그룹을 쉽게 만들 수 있습니다.
  1. Setup(설정)의 Quick Find(빠른 찾기) 상자에서 Synonyms를 입력한 다음 Synonyms(동의어)를 선택합니다.
  2. Custom Synonym Groups(사용자 정의 동의어 그룹)에서 New(새로 만들기)를 클릭하여 동의어 그룹을 시작하거나, 기존 그룹 옆의 Edit(편집)을 클릭합니다.
  3. 그룹당 2~6개의 동의어를 추가합니다. 어떤 단어나 구도 동의어가 될 수 있습니다. 특수 문자는 사용할 수 없습니다.
참고

Salesforce에서 제공하는 표준 동의어 그룹은 기본적으로 사용하도록 설정되어 있습니다.

가져올 동의어가 많이 있나요? 참조 섹션에 나열된 메타데이터 API를 활용하세요.

이제 동의어 그룹을 처리했으므로 다음 단계에서 Knowledge 기사에 대한 검색어로 승격됩니다.

승격된 검색어는 지원 문제를 해결하는 데 일반적으로 사용되는 기사에서 더 많은 관심을 끄는 데 유용합니다. 설정 작업은 간단합니다. 관리자는 완벽한 기사를 찾은 다음 승격된 검색어 관련 목록에 용어를 추가합니다. 해당 키워드를 입력한 사용자는 검색 결과 상단에서 선택한 기사를 볼 수 있습니다.

예를 들어, 지원 팀은 맞지 않는 신발을 반품하는 방법에 대한 완벽한 기사를 작성했습니다. 관리자는 승격된 검색어 returndoesn’t fit을 포함하도록 해당 기사를 업데이트합니다. 사용자가 해당 용어를 검색하면 기사 팝업 창이 나타납니다.

관리자가 승격된 검색어를 미세 조정하는 데 도움이 되는 몇 가지 사항입니다.

  • 용어당 최대 문자 수는 100자입니다. 사용자의 검색어를 일치시킬 경우 최적의 결과를 얻으려면 각 승격된 용어를 몇 개의 키워드로 제한합니다.
  • 과하게 추가하지 않도록 합니다. 최적의 결과를 얻으려면 이러한 키워드를 선택적으로 사용합니다. 즉, 제한된 수의 승격된 용어와 용어당 제한된 수의 승격 기사를 작성합니다. 승격된 검색어를 너무 많이 추가할 경우 사용자의 관련성 순위에 영향을 주어 원치 않는 결과를 초래할 수 있습니다. 조직에서는 승격된 검색어를 최대 2,000개까지 만들 수 있습니다.
  • 기사 검색은 검색어 내의 모든 키워드가 사용자의 검색어 내에서 순서에 관계없이 발생할 때마다 승격된 검색어와 일치합니다. 각 키워드는 정확히 일치해야 합니다.

정리 시간

검색은 Salesforce 기능 중 최고는 아닐 수 있지만, 가장 많이 사용되는 기능입니다.

이 모듈을 통해 여러분 모두 Salesforce의 기능을 충분히 숙지하고 최대한 활용하실 수 있길 기대합니다. 검색 아키텍처, 몇몇 일반 사용 사례에 대한 검색 솔루션을 구축하는 방법 및 효율적인 검색 쿼리를 만드는 방법을 살펴보았습니다. 사용자들의 관심을 끄는 검색을 구축해 보세요.

Salesforce 도움말에서 Trailhead 피드백을 공유하세요.

Trailhead에 관한 여러분의 의견에 귀 기울이겠습니다. 이제 Salesforce 도움말 사이트에서 언제든지 새로운 피드백 양식을 작성할 수 있습니다.

자세히 알아보기 의견 공유하기