Docs Menu
Docs Home
/
MongoDB Atlas
/ / /

Atlas Search 인덱스에서 동의어 매핑을 정의하세요

이 페이지의 내용

  • 구문
  • 옵션
  • 동의어 소스 컬렉션 문서
  • 동의어 소스 collection 문서의 형식
  • 동의어 소스 컬렉션 문서 변경 사항
  • mappingType 예시
  • equivalent
  • explicit
  • 예시
  • 동의어 소스 컬렉션 예시
  • 인덱스 정의 예시
  • 정적 매핑
  • 동적 매핑

synonyms 동일하거나 거의 동일한 의미를 가진 단어를 컬렉션에서 인덱싱하고 검색할 수 있습니다. 동의어 매핑을 사용하여 Atlas Search 인덱스를 구성하려면 다음을 수행해야 합니다.

  1. 올바른 형식의 동의어 문서가 포함된 새 collection을 생성합니다. 다음 사항을 확인합니다.

    • 사용자의 collection은 collection을 참조할 인덱스와 동일한 데이터베이스에 있습니다.

    • 동의어 소스 컬렉션 문서에 설명된 대로 컬렉션의 문서 형식을 지정합니다.

  2. 인덱스 정의의 동의어 매핑에서 동의어 소스 컬렉션을 참조하십시오.

    참고

    무료(M0) 및 공유(M2 및 M5) 계층 클러스터 제한

    인덱스 정의는 하나의 동의어 매핑만 가질 수 있습니다.

이 페이지에서는 동의어 소스 컬렉션의 형식과 Atlas Search 인덱스에서 동의어 소스 컬렉션을 참고하는 동의어 매핑 정의 방법을 설명합니다. 동의어 매핑은 별도의 동의어 소스 컬렉션에서 동의어를 적용하는 쿼리를 지원하도록 Atlas Search 인덱스를 구성합니다. Atlas UI 또는 Atlas Search API에서 Atlas Search Visual Editor 뷰 또는 Atlas Search JSON Editor 뷰를 사용하여 인덱스를 생성할 수 있습니다. 텍스트 연산자를 사용하는 쿼리에서만 동의어를 사용할 수 있습니다.

synonyms 인덱스 정의에는 다음과 같은 구문이 있습니다.

1{
2 "name": "<index-name>",
3 "analyzer": "<analyzer-for-index>",
4 "searchAnalyzer": "<analyzer-for-query>",
5 "mappings": {
6 "dynamic": <boolean>,
7 "fields": { <field-definition> }
8 },
9 "synonyms": [
10 {
11 "name": "<synonym-mapping-name>",
12 "source": {
13 "collection": "<source-collection-name>"
14 },
15 "analyzer": "<synonym-mapping-analyzer>"
16 }
17 ]
18}

synonyms 는 인덱스 정의에서 다음 필드를 사용합니다.

필드
유형
설명
필요성
analyzer
문자열

이 동의어 매핑에 사용할 분석기의 이름입니다.

동의어 매핑을 사용하여 동일한 분석기로 분석된 필드만 쿼리할 수 있습니다. 기본적으로 Atlas Search은 표준 분석기("lucene.standard")를 사용합니다.

중지 단어와 함께 동의어를 사용하려면 표준 분석기를 사용하여 필드를 인덱싱하거나 중지 단어 없이 동의어 항목을 추가해야 합니다.

다음을 제외한 모든 Atlas Search 분석기를 사용할 수 있습니다.

언어 분석기

  • lucene.kuromoji

  • lucene.cjk

사용자 지정 분석기 토크나이저 및 토큰 필터.

필수 사항
name
문자열
동의어 매핑의 이름입니다. 이름은 인덱스 정의에서 유일한 이름이어야 합니다. 값은 빈 문자열일 수 없습니다.
필수 사항
source
문서
동의어에 대한 소스 collection입니다. source 옵션은 collection 필드를 사용합니다.
필수 사항
source.collection
문자열
Atlas Search 인덱스와 동일한 데이터베이스에 있는 MongoDB 컬렉션의 이름입니다. 이 컬렉션의 문서는 동의어 소스 컬렉션 문서에 설명된 형식이어야 합니다.
필수 사항

동의어의 소스로 지정된 collection의 각 문서는 하나 이상의 단어가 해당 단어의 하나 이상의 동의어에 매핑되는 방식을 설명합니다.

참고

무료 및 공유 계층 Atlas 클러스터에서는 10,000개 문서를 초과하는 동의어 컬렉션을 구성할 수 없습니다.

다음 필드를 사용하여 각 문서를 구성해야 합니다.

필드
유형
설명
필요성
input
문자열 배열

mappingType: explicit 매핑에 필요합니다.

explicit 매핑의 경우, synonyms 값은 각 input 토큰의 동의어입니다. 값은 비어 있거나 공백이 모두 있는 문자열일 수 없습니다. 여러 문서에서 동일한 input 값을 지정할 수 있습니다.

조건부
mappingType
문자열

매핑 유형입니다. 값은 다음 중 하나일 수 있습니다.

  • equivalent - 서로 동일한 토큰 세트를 설명합니다. 이 mappingType 의 예는 예시를 참조하세요 .

  • explicit - input 토큰을 일치시키고 모든 대체 synonyms 토큰으로 바꿉니다. 이 mappingType 의 예는 예시를 참조하세요 .

필수 사항
synonyms
문자열 배열

mappingTypeequivalent인 경우 서로 동의어 관계인 단어, 또는 mappingTypeexplicit인 경우 input 토큰의 동의어입니다. synonyms 에 값이 하나 이상 있어야 합니다.

Atlas Search는 포함된 단어 수에 관계없이 각 문자열을 단일 토큰으로 간주합니다. 예를 들어, Atlas Search는 문자열 sushi chef을 단일 텀으로 토큰화하며 sushi 또는 chef에 대한 검색 결과를 개별적으로 반환하지 않습니다.

중지 단어와 함께 동의어를 사용하려면 중지 단어 없이 동의어 엔트리를 추가하거나 표준 분석기를 사용하여 필드를 인덱싱해야 합니다.

mappingType의 예시는 mappingType 예시를 참조하세요.

필수 사항

collection의 문서에는 다른 필드가 포함될 수 있습니다. collection의 문서는 가산적이며 매핑은 중복되지 않습니다. Atlas Search 동의어는 별도의 Atlas collection으로 저장되며, 이 collection은 Atlas의 다른 collection과 동일한 저장 용량 할당량에 포함됩니다. Atlas Search는 대규모 동의어 소스 collection의 동의어를 적용하기 위해 더 많은 컴퓨팅 리소스를 사용할 수 있습니다.

경고

동의어 소스 컬렉션에 잘못된 동의어 문서를 포함하지 마세요. 인덱스가 유효하지 않은 문서가 있는 컬렉션을 참조하는 동의어 매핑을 사용하는 경우 Atlas Search는 인덱스를 만들지 않습니다. 동의어 소스 컬렉션에 올바른 형식의 동의어 문서만 포함하세요.

MongoDB는 동의어 문서의 형식이 적절하며 테스트 환경에서 예상대로 작동하는지 먼저 확인하지 않고 프로덕션 환경의 동의어 소스 collection에 동의어 문서를 추가하는 것을 권장하지 않습니다.

동의어 소스 collection을 변경하는 경우 다음과 같습니다.

  • Atlas Search는 변경 사항을 감시하고 내부 동의어 맵을 자동으로 업데이트하므로 다시 인덱싱할 필요가 없습니다.

  • 동의어 소스 컬렉션의 크기에 따라 Atlas Search에서 동의어 매핑을 업데이트하는 데 걸리는 시간이 증가합니다. 동의어 문서에 대한 변경 사항은 결국 Atlas Search 쿼리 결과에 반영되니 참고하시기 바랍니다.

Atlas는 sample_synonyms 컬렉션에서 다음과 같은 Atlas Search 매핑 유형 예시에 대한 문서를 제공합니다. 컬렉션과 동일한 데이터베이스의 클러스터에 이러한 문서를 로드할 수 있습니다. 이러한 문서를 클러스터에 로드하려면 컬렉션의 인덱스를 만들 때 다음과 같이 실행하십시오.

  1. Configuration Method을 선택한 경우, Visual Editor을 선택합니다.

  2. 인덱스에 Add synonym mapping을 추가한 경우, Synonym source collection 드롭다운에서 Load sample collection 을 선택합니다.

예시

equivalent 매핑 유형 예시에서 synonyms 토큰 car, vehicle, automobile는 서로 동의어로 구성됩니다.

{
"mappingType": "equivalent",
"synonyms": ["car", "vehicle", "automobile"]
}

car, vehicle 또는 automobile에 대한 텍스트 쿼리의 경우 이러한 용어가 있는 문서를 포함하는 동의어 매핑을 적용하면 Atlas Search는 car, vehicle 또는 automobile라는 용어가 포함된 문서를 반환합니다.

예시

explicit 매핑 유형 예시에서 input 토큰 beerbeer, brew, pint를 동의어로 간주하도록 구성되어 있습니다.

{
"mappingType": "explicit",
"input": ["beer"],
"synonyms": ["beer", "brew", "pint"]
}

이러한 문서를 포함하는 동의어 매핑을 적용하는 beer에 대한 텍스트 쿼리의 경우 input 토큰 beer가 이러한 모든 synonyms 토큰에 명시적으로 매핑되므로 Atlas Search는 'beer', 'brew' 또는 'pint'라는 텀이 포함된 문서를 반환합니다. 그러나 pint에 대한 쿼리의 경우, pintbeer에 명시적으로 매핑되지 않았으므로 Atlas Search는 beer가 포함된 문서를 찾지 못합니다.

이 페이지에 포함된 예시:

synonymous_terms라는 이름의 컬렉션은 sample_mflix 데이터베이스의 movies 컬렉션과 함께 사용할 수 있는 동의어 소스 컬렉션의 예입니다.

참고

컬렉션에 있는 문서의 형식을 지정하는 방법을 알아보려면 동의어 소스 컬렉션 문서를 참조하세요.

sample_mflix.synonymous_terms 컬렉션에는 다음 문서가 포함되어 있습니다.

{
"mappingType": "equivalent",
"synonyms": ["car", "vehicle", "automobile"]
}
{
"mappingType": "explicit",
"input": ["race"],
"synonyms": ["contest", "rally"]
}
{
"mappingType": "equivalent",
"synonyms": ["dress", "apparel", "attire"]
}
{
"mappingType": "explicit",
"input": ["boat"],
"synonyms": ["vessel", "sail"]
}

다음 sample_mflix.movies 컬렉션의 예에서는 정적 및 동적 매핑을사용하는 인덱스 정의를 보여 줍니다.

참고

아래의 동적 매핑 인덱스를 사용하여 sample_mflix.movies 컬렉션에 대한 샘플 쿼리를 보려면 textphrase 연산자에서 예시를 확인하세요.

다음 인덱스는

  • 단일 텍스트 필드와 synonymous_terms collection에 구성된 매핑을 사용하는 단일 동의어 매핑 정의로 인덱스를 구성합니다.

  • lucene.english 분석기를 사용하여 plot 필드를 분석합니다.

  • lucene.english 분석기로 분석한 필드에 대한 쿼리에 synonymous_terms 컬렉션의 동의어를 허용합니다.

Atlas UI의 비주얼 편집기 또는 JSON 편집기를 사용하여 다음 인덱스를 구성할 수 있습니다. 이 인덱스를 구성하려면 구성 메서드를 선택한 후 sample_mflix 데이터베이스에서 movies collection을 선택합니다.

  1. Refine Your Index를 클릭합니다.

  2. Field Mappings 섹션에서 Add Field을 클릭합니다.

  3. Customized Configuration를 클릭합니다.

  4. Add Field Mapping 창에서 다음 설정을 구성합니다.

    Field Name
    Enable Dynamic Mapping
    Data Type Configuration
    plot0}을 선택합니다.
    비활성화하려면 토글합니다.
    1. Add Data Type를 클릭합니다.

    2. 드롭다운 메뉴에서 String 을(를) 선택합니다.

    3. Index Analyzer 드롭다운에서 lucene.language 아래에 있는 lucene.english을(를) 선택합니다.

  5. Add를 클릭합니다.

  6. Synonyms Mappings 섹션에서 Add Synonym Mapping을 클릭합니다.

  7. Add Synonym Mapping 창에서 다음 설정을 구성합니다.

    Synonym mapping name
    Synonym source collection
    Analyzer
    입력 my_synonyms
    synonymous_terms0}을 선택합니다.
    드롭다운에서 lucene.language 아래에 있는 lucene.english을(를) 선택합니다.
  8. Add를 클릭합니다.

기본 인덱스를 다음 인덱스로 바꿉니다.

{
"mappings": {
"dynamic": false,
"fields": {
"plot": {
"type": "string",
"analyzer": "lucene.english"
}
}
},
"synonyms": [
{
"analyzer": "lucene.english",
"name": "my_synonyms",
"source": {
"collection": "synonymous_terms"
}
}
]
}

다음 인덱스는

  • 문서의 모든 필드에 대한 인덱스와 synonymous_terms collection에 구성된 매핑을 사용하는 단일 동의어 매핑 정의를 구성합니다.

  • 기본 분석기인 lucene.standard 사용하여 모든 필드를 분석합니다.

  • lucene.standard 분석기로 분석한 필드에 대한 쿼리에 synonymous_terms 컬렉션의 동의어를 허용합니다.

Atlas UI의 비주얼 편집기 또는 JSON 편집기를 사용하여 다음 인덱스를 구성할 수 있습니다. 이 인덱스를 구성하려면 구성 방법을 선택한 후 sample_mflix 데이터베이스에서 movies 컬렉션을 선택합니다.

  1. Refine Your Index를 클릭합니다.

  2. Synonyms Mappings 섹션에서 Add Synonym Mapping을 클릭합니다.

  3. Add Synonym Mapping 창에서 다음 설정을 구성합니다.

    Synonym mapping name
    Synonym source collection
    Analyzer
    입력 my_synonyms
    synonymous_terms0}을 선택합니다.
    아직 선택되지 않은 경우 드롭다운에서 lucene.standard을(를) 선택합니다.
  4. Add를 클릭합니다.

{
"mappings": {
"dynamic": true
},
"synonyms": [
{
"analyzer": "lucene.standard",
"name": "my_synonyms",
"source": {
"collection": "synonymous_terms"
}
}
]
}

돌아가기

3: 저장된 필드 구성