문서 메뉴
문서 홈
/
MongoDB 아틀라스
/ / / /

언어 분석기

이 페이지의 내용

  • 예제
  • 내장 언어 분석기 예제
  • 사용자 지정 언어 분석기 예시

언어별 분석기를 사용하여 특정 언어에 맞는 인덱스를 생성합니다. 각 언어 분석기에는 해당 언어의 사용 패턴에 따라 중지 단어와 단어 구분이 내장되어 있습니다.

Atlas Search는 다음과 같은 언어 분석기를 제공합니다.

lucene.arabic
lucene.armenian
lucene.basque
lucene.bengali
lucene.brazilian
lucene.bulgarian
lucene.catalan
lucene.chinese
lucene.cjk 1
lucene.czech
lucene.danish
lucene.dutch
lucene.english
lucene.finnish
lucene.french
lucene.galician
lucene.german
lucene.greek
lucene.hindi
lucene.hungarian
lucene.indonesian
lucene.irish
lucene.italian
lucene.japanese
lucene.korean
lucene.kuromoji 2
lucene.latvian
lucene.lithuanian
lucene.morfologik 3
lucene.nori 4
lucene.norwegian
lucene.persian
lucene.polish
lucene.portuguese
lucene.romanian
lucene.russian
lucene.smartcn 5
lucene.sorani
lucene.spanish
lucene.swedish
lucene.thai
lucene.turkish
lucene.ukrainian

1 cjk 중국어, 일본어 및 한국어 분석기입니다.

2 kuromoji 은(는) 일본어 분석기입니다.

3 morfologik 은(는) 폴란드어 분석기입니다.

4 nori 는 한국어 분석기입니다.

5 smartcn 는 중국어 분석기입니다.

다음 문서가 포함된 cars (이)라는 이름의 컬렉션이 있다고 가정해 보겠습니다.

{
"_id": 1,
"subject": {
"en": "It is better to equip our cars to understand the causes of the accident.",
"fr": "Mieux équiper nos voitures pour comprendre les causes d'un accident.",
"he": "עדיף לצייד את המכוניות שלנו כדי להבין את הגורמים לתאונה."
}
}
{
"_id": 2,
"subject": {
"en": "The best time to do this is immediately after you've filled up with fuel",
"fr": "Le meilleur moment pour le faire c'est immédiatement après que vous aurez fait le plein de carburant.",
"he": "הזמן הטוב ביותר לעשות זאת הוא מיד לאחר שמילאת דלק."
}
}

다음 예제 인덱스 정의는 french 분석기를 사용하여 subject.fr 필드에 대한 인덱스를 지정합니다.

{
"mappings": {
"fields": {
"subject": {
"fields": {
"fr": {
"analyzer": "lucene.french",
"type": "string"
}
},
"type": "document"
}
}
}
}

다음 쿼리는 subject.fr 필드에서 pour string 을 검색합니다.

db.cars.aggregate([
{
$search: {
"text": {
"query": "pour",
"path": "subject.fr"
}
}
},
{
$project: {
"_id": 0,
"subject.fr": 1
}
}
])

french 분석기를 사용할 때 이전 쿼리는 결과를 반환하지 않는데, 이는 pour 가 내장된 중지 단어이기 때문입니다. standard 분석기를 사용하면 동일한 쿼리로 두 문서가 모두 반환됩니다.

다음 쿼리는 subject.fr 필드에서 carburant string 을 검색합니다.

db.cars.aggregate([
{
$search: {
"text": {
"query": "carburant",
"path": "subject.fr"
}
}
},
{
$project: {
"_id": 0,
"subject.fr": 1
}
}
])
{ subject: { fr: "Le meilleur moment pour le faire c'est immédiatement après que vous aurez fait le plein de carburant." } }

쿼리가 lucene.french 분석기가 문서에 대해 생성한 토큰과 일치하기 때문에 Atlas Search는 결과에 _id: 1 이 포함된 문서를 반환합니다. lucene.french 분석기는 _id: 1 를 사용하여 문서의 subject.fr 필드에 대해 다음 토큰을 생성합니다.

meileu
moment
fair
est
imediat
aprè
fait
plein
carburant

icuFoldingstopword 토큰 필터를 사용하여 사용자 지정 분석기 를 만들어 지원되지 않는 언어에 대한 인덱스를 만들 수도 있습니다.

다음 인덱스 정의 예시에서는 myHebrewAnalyzer 이라는 사용자 지정 분석기 를 사용하여 subject.he 필드에 인덱스를 지정하여 히브리어 텍스트에 대한 토큰을 분석하고 생성합니다.

{
"analyzer": "lucene.standard",
"mappings": {
"dynamic": false,
"fields": {
"subject": {
"fields": {
"he": {
"analyzer": "myHebrewAnalyzer",
"type": "string"
}
},
"type": "document"
}
}
},
"analyzers": [
{
"charFilters": [],
"name": "myHebrewAnalyzer",
"tokenFilters": [
{
"type": "icuFolding"
},
{
"tokens": [
"אן",
"שלנו",
"זה",
"אל"
],
"type": "stopword"
}
],
"tokenizer": {
"type": "standard"
}
}
]
}

다음 쿼리는 subject.he 필드에서 המכוניות string 을 검색합니다.

db.cars.aggregate([
{
$search: {
"text": {
"query": "המכוניות",
"path": "subject.he"
}
}
},
{
$project: {
"_id": 0,
"subject.he": 1
}
}
])
{ subject: { he: 'עדיף לצייד את המכוניות שלנו כדי להבין את הגורמים לתאונה.' } }

쿼리가 myHebrewAnalyzer 분석기가 문서에 대해 생성한 토큰과 일치하기 때문에 Atlas Search는 결과에 _id: 1 이 포함된 문서를 반환합니다. myHebrewAnalyzer 분석기는 _id: 1 를 사용하여 문서의 subject.he 필드에 대해 다음 토큰을 생성합니다.

עדיף
לצייד
את
המכוניות
כדי
להבין
את
הגורמים
לתאונה

돌아가기

키워드

다음

멀티