동의어 정의

조직은 일반적으로 개념이나 사물을 지칭하는 고유한 용어나 여러 가지 방법을 사용합니다. 사용자가 원하는 항목을 검색하는 데 도움이 되도록 용어의 유사성을 정립하는 동의어를 정의해야 합니다.

동의어는 _dictionaryEntry 잘 알려진 항목을 사용하여 항목의 색인을 생성하는 방식으로 정의됩니다. 사용할 수 있습니다

_dictionaryEntry 유형의 항목에는 다음 속성이 포함될 수 있습니다.

속성 유형 설명 필수 여부
_term string 정의할 용어. 권장 값은 구두점과 하이픈이 없는 단어 또는 구입니다. 필수
_synonym string (repeated) _term에 정의된 문자열과 일치하는 쿼리에 포함될 대체 용어입니다. 필수
_onlyApplicableForAttachedSearchApplications boolean 데이터 소스 및 검색 애플리케이션별로 동의어를 그룹화할 수 있습니다. 자세한 내용은 데이터 소스별 동의어 정의를 참고하세요. 선택사항

사용자가 쿼리에 _term 속성 값을 포함하면 effective 쿼리는 '용어 OR 동의어'가 됩니다. 예를 들어 용어 "scifi"는 다음 동의어로 정의됩니다. "science fiction" 다음 쿼리 "scifi" 단어가 포함된 결과는 다음을 포함하는 항목과 일치합니다. "scifi" 또는 또는 "science fiction."

동의어는 양방향으로 적용되지 않습니다. 쿼리가 "science fiction," Cloud Search 쿼리에 동의어를 적용하지 않습니다. 검색어가 다음을 포함하는 항목만 일치 다음을 포함하는 항목 "science fiction.""scifi"이(가) 생략되었습니다.

두 용어를 서로 바꿔서 사용할 수 있도록 하려면 각 용어를 개별적으로 정의합니다.

용어 동의어
scifi science fiction
science fiction scifi

쿼리 처리 중에 하이픈 및 기타 구두점은 살펴보겠습니다 사용자 쿼리 "sci-fi" _term "sci fi."과 일치 사용자가 하이픈을 추가할 수 있는 용어의 동의어를 만들려면 먼저 하이픈 대신 공백을 사용하는 _term

이 예를 계속 보면, 다음 정의는 "sci-fi," "sci fi," "scifi,""science fiction"는 다음과 같이 서로 바꿔서 사용할 수 있습니다.

용어 동의어
scifi science fiction, sci fi
sci fi science fiction, scifi
science fiction scifi, sci fi

기본적으로 모든 데이터 소스의 동의어는 도메인 전체에 적용됩니다. 특히 동의어는 모든 검색어에 대한 검색 애플리케이션에 적용됩니다. 데이터 소스에 관계없이 데이터 소스별 동의어를 찾으려면 다음을 참고하세요. 데이터 소스별 동의어 정의를 참조하세요.

Cloud Search SDK를 사용하여 글로벌 동의어 정의

콘텐츠 커넥터 SDK를 사용하여 용어와 동의어를 정의할 수 있습니다. 커넥터 제작 방법을 보려면 콘텐츠 커넥터 만들기를 참조하세요.

다음 스니펫은 RepositoryDoc 는 CSV 파일 레코드를 기반으로 용어와 동의어를 나타냅니다.

DictionaryConnector.java
/**
 * Creates a document for indexing.
 *
 * For this connector sample, the created document is domain public
 *  searchable. The content is a simple text string.
 *
 * @param record The current CSV record to convert
 * @return the fully formed document ready for indexing
 */
private ApiOperation buildDocument(CSVRecord record) {
  // Extract term and synonyms from record
  String term = record.get(0);
  List<String> synonyms = StreamSupport.stream(record.spliterator(), false)
      .skip(1) // Skip term
      .collect(Collectors.toList());

  Multimap<String, Object> structuredData = ArrayListMultimap.create();
  structuredData.put("_term", term);
  structuredData.putAll("_synonym", synonyms);

  if (Configuration.getBoolean("dictionary.attachedToSearchApp", false).get()) {
    structuredData.put("_onlyApplicableForAttachedSearchApplications", true);
  }

  String itemName = String.format("dictionary/%s", term);

  // Using the SDK item builder class to create the item
  Item item =
      IndexingItemBuilder.fromConfiguration(itemName)
          .setItemType(IndexingItemBuilder.ItemType.CONTENT_ITEM)
          .setObjectType("_dictionaryEntry")
          .setValues(structuredData)
          .setAcl(DOMAIN_PUBLIC_ACL)
          .build();

  // Create the fully formed document
  return new RepositoryDoc.Builder()
      .setItem(item)
      .build();
}

동의어를 정의할 때는 다음 사항에 유의하세요.

  • 동의어 항목은 도메인 공용이어야 합니다. 이전 예에서는 ACL을 DOMAIN_PUBLIC_ACL로 설정하면 이를 구현할 수 있습니다.
  • 구성 파일에 다음 속성을 정의해서는 안 됩니다. 이는 코드의 도메인 공개 설정을 재정의하기 때문입니다. <ph type="x-smartling-placeholder">
      </ph>
    • defaultAcl.mode=FALLBACK
    • defaultAcl.public=true

검색 애플리케이션별 동의어 정의

기본적으로 동의어는 모든 검색의 모든 데이터 소스에 적용됩니다. 애플리케이션을 실행할 수 있습니다

그러나 조직에 엔지니어링팀과 영업팀이 분리되어 있고 각 팀에 다음과 같은 서로 다른 검색 환경을 제공하려는 경우 작업 역할별 동의어를 사용합니다. 이 경우 1개의 검색어에 대해 동의어로 구성된 애플리케이션과 검색 애플리케이션을 만들 수 있습니다. 완수할 일 특정 데이터 소스의 각 동의어에 대해 색인을 생성합니다. _onlyApplicableForAttachedSearchApplications=true 사용. 이 를 설정하면 검색어에 해당 동의어가 검색에만 특정 데이터 소스를 포함하는 애플리케이션

예를 들어 이전 코드 샘플의 다음 코드 줄은 색인이 생성된 동의어가 데이터 소스에 따라 다릅니다.

structuredData.put("_onlyApplicableForAttachedSearchApplications", true);