Docs Menu
Docs Home
/
MongoDB Atlas
/ / / /

언어 분석기

이 페이지의 내용

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

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

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 필드에 대해 다음 토큰을 생성합니다.

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

돌아가기

Keyword