Atlas Search 인덱스에서 동의어 매핑을 정의하세요
이 페이지의 내용
synonyms
동일하거나 거의 동일한 의미를 가진 단어를 컬렉션에서 인덱싱하고 검색할 수 있습니다. 동의어 매핑을 사용하여 Atlas Search 인덱스를 구성하려면 다음을 수행해야 합니다.
올바른 형식의 동의어 문서가 포함된 새 collection을 생성합니다. 다음 사항을 확인합니다.
사용자의 collection은 collection을 참조할 인덱스와 동일한 데이터베이스에 있습니다.
동의어 소스 컬렉션 문서에 설명된 대로 컬렉션의 문서 형식을 지정합니다.
인덱스 정의의 동의어 매핑에서 동의어 소스 컬렉션을 참조하십시오.
이 페이지에서는 동의어 소스 컬렉션의 형식과 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
는 인덱스 정의에서 다음 필드를 사용합니다.
필드 | 유형 | 설명 | 필요성 |
---|---|---|---|
| 문자열 | 이 동의어 매핑에 사용할 분석기의 이름입니다. 동의어 매핑을 사용하여 동일한 분석기로 분석된 필드만 쿼리할 수 있습니다. 기본적으로 Atlas Search은 표준 분석기( 중지 단어와 함께 동의어를 사용하려면 표준 분석기를 사용하여 필드를 인덱싱하거나 중지 단어 없이 동의어 항목을 추가해야 합니다. 다음을 제외한 모든 Atlas Search 분석기를 사용할 수 있습니다.
사용자 지정 분석기 토크나이저 및 토큰 필터.
| 필수 사항 |
| 문자열 | 동의어 매핑의 이름입니다. 이름은 인덱스 정의에서 유일한 이름이어야 합니다. 값은 빈 문자열일 수 없습니다. | 필수 사항 |
| 문서 | 필수 사항 | |
| 문자열 | Atlas Search 인덱스 와 동일한 데이터베이스 에 있는 MongoDB 컬렉션 의 이름입니다. 이 컬렉션 의 문서는 동의어 소스 컬렉션 문서에 설명된 형식이어야 합니다. | 필수 사항 |
동의어 소스 컬렉션 문서
동의어의 소스로 지정된 collection의 각 문서는 하나 이상의 단어가 해당 단어의 하나 이상의 동의어에 매핑되는 방식을 설명합니다.
참고
무료 및 공유 계층 Atlas 클러스터에서는 10,000개 문서를 초과하는 동의어 컬렉션을 구성할 수 없습니다.
동의어 소스 collection 문서의 형식
다음 필드를 사용하여 각 문서를 구성해야 합니다.
필드 | 유형 | 설명 | 필요성 |
---|---|---|---|
| 문자열 배열 |
| 조건부 |
| 문자열 | 매핑 유형입니다. 값은 다음 중 하나일 수 있습니다.
| 필수 사항 |
| 문자열 배열 |
Atlas Search는 포함된 단어 수에 관계없이 각 문자열을 단일 토큰으로 간주합니다. 예를 들어, Atlas Search는 문자열 중지 단어와 함께 동의어를 사용하려면 중지 단어 없이 동의어 엔트리를 추가하거나 표준 분석기를 사용하여 필드를 인덱싱해야 합니다. 각 의 | 필수 사항 |
collection의 문서에는 다른 필드가 포함될 수 있습니다. collection의 문서는 가산적이며 매핑은 중복되지 않습니다. Atlas Search 동의어는 별도의 Atlas collection으로 저장되며, 이 collection은 Atlas의 다른 collection과 동일한 저장 용량 할당량에 포함됩니다. Atlas Search는 대규모 동의어 소스 collection의 동의어를 적용하기 위해 더 많은 컴퓨팅 리소스를 사용할 수 있습니다.
경고
동의어 소스 컬렉션에 잘못된 동의어 문서를 포함하지 마세요. 인덱스가 유효하지 않은 문서가 있는 컬렉션을 참조하는 동의어 매핑을 사용하는 경우 Atlas Search는 인덱스를 만들지 않습니다. 동의어 소스 컬렉션에 올바른 형식의 동의어 문서만 포함하세요.
MongoDB는 동의어 문서의 형식이 적절하며 테스트 환경에서 예상대로 작동하는지 먼저 확인하지 않고 프로덕션 환경의 동의어 소스 collection에 동의어 문서를 추가하는 것을 권장하지 않습니다.
동의어 소스 컬렉션 문서 변경 사항
동의어 소스 collection을 변경하는 경우 다음과 같습니다.
Atlas Search는 변경 사항을 감시하고 내부 동의어 맵을 자동으로 업데이트하므로 다시 인덱싱할 필요가 없습니다.
동의어 소스 컬렉션의 크기에 따라 Atlas Search에서 동의어 매핑을 업데이트하는 데 걸리는 시간이 증가합니다. 동의어 문서에 대한 변경 사항은 결국 Atlas Search 쿼리 결과에 반영되니 참고하시기 바랍니다.
mappingType
예시
Atlas는 sample_synonyms
컬렉션에서 다음과 같은 Atlas Search 매핑 유형 예시에 대한 문서를 제공합니다. 컬렉션과 동일한 데이터베이스의 클러스터에 이러한 문서를 로드할 수 있습니다. 이러한 문서를 클러스터에 로드하려면 컬렉션의 인덱스를 만들 때 다음과 같이 실행하십시오.
Configuration Method을 선택한 경우, Visual Editor을 선택합니다.
인덱스에 Add synonym mapping을 추가한 경우, Synonym source collection 드롭다운에서 Load sample collection 을 선택합니다.
equivalent
예시
이 equivalent
매핑 유형 예시에서 synonyms
토큰 car
, vehicle
, automobile
는 서로 동의어로 구성됩니다.
{ "mappingType": "equivalent", "synonyms": ["car", "vehicle", "automobile"] }
car
, vehicle
또는 automobile
에 대한 텍스트 쿼리의 경우 이러한 용어가 있는 문서를 포함하는 동의어 매핑을 적용하면 Atlas Search는 car
, vehicle
또는 automobile
라는 용어가 포함된 문서를 반환합니다.
explicit
예시
이 explicit
매핑 유형 예시에서 input
토큰 beer
는 beer
, brew
, pint
를 동의어로 간주하도록 구성되어 있습니다.
{ "mappingType": "explicit", "input": ["beer"], "synonyms": ["beer", "brew", "pint"] }
이러한 문서를 포함하는 동의어 매핑을 적용하는 beer
에 대한 텍스트 쿼리의 경우 input
토큰 beer
가 이러한 모든 synonyms
토큰에 명시적으로 매핑되므로 Atlas Search는 'beer', 'brew' 또는 'pint'라는 텀이 포함된 문서를 반환합니다. 그러나 pint
에 대한 쿼리의 경우, pint
이 beer
에 명시적으로 매핑되지 않았으므로 Atlas Search는 beer
가 포함된 문서를 찾지 못합니다.
예시
이 페이지에 포함된 예시:
sample_mflix
데이터베이스에 있는synonymous_terms
라는 샘플 동의어 소스 컬렉션입니다.sample_mflix.movies
및sample_mflix.synonymous_terms
컬렉션의 문서에 의존하는 인덱스 정의 예시입니다.
동의어 소스 컬렉션 예시
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
컬렉션의 예에서는 정적 및 동적 매핑을사용하는 인덱스 정의를 보여 줍니다.
정적 매핑
다음 인덱스는
단일 텍스트 필드와
synonymous_terms
collection에 구성된 매핑을 사용하는 단일 동의어 매핑 정의로 인덱스를 구성합니다.lucene.english
분석기를 사용하여plot
필드를 분석합니다.lucene.english
분석기로 분석한 필드에 대한 쿼리에synonymous_terms
컬렉션의 동의어를 허용합니다.
Atlas UI의 비주얼 편집기 또는 JSON 편집기를 사용하여 다음 인덱스를 구성할 수 있습니다. 이 인덱스를 구성하려면 구성 메서드를 선택한 후 sample_mflix
데이터베이스에서 movies
collection을 선택합니다.
Refine Your Index를 클릭합니다.
Field Mappings 섹션에서 Add Field을 클릭합니다.
Customized Configuration를 클릭합니다.
Add Field Mapping 창에서 다음 설정을 구성합니다.
Field NameEnable Dynamic MappingData Type Configurationplot
0}을 선택합니다.비활성화하려면 토글합니다.
Add Data Type를 클릭합니다.
드롭다운 메뉴에서 String 을(를) 선택합니다.
Index Analyzer 드롭다운에서
lucene.language
아래에 있는lucene.english
을(를) 선택합니다.
Add를 클릭합니다.
Synonyms Mappings 섹션에서 Add Synonym Mapping을 클릭합니다.
Add Synonym Mapping 창에서 다음 설정을 구성합니다.
Synonym mapping nameSynonym source collectionAnalyzer입력
my_synonyms
synonymous_terms
0}을 선택합니다.드롭다운에서
lucene.language
아래에 있는lucene.english
을(를) 선택합니다.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
컬렉션을 선택합니다.
Refine Your Index를 클릭합니다.
Synonyms Mappings 섹션에서 Add Synonym Mapping을 클릭합니다.
Add Synonym Mapping 창에서 다음 설정을 구성합니다.
Synonym mapping nameSynonym source collectionAnalyzer입력
my_synonyms
synonymous_terms
0}을 선택합니다.아직 선택되지 않은 경우 드롭다운에서
lucene.standard
을(를) 선택합니다.Add를 클릭합니다.
{ "mappings": { "dynamic": true }, "synonyms": [ { "analyzer": "lucene.standard", "name": "my_synonyms", "source": { "collection": "synonymous_terms" } } ] }