언어 분석기
이 페이지의 내용
언어별 분석기를 사용하여 특정 언어에 맞는 인덱스를 생성합니다. 각 언어 분석기에는 해당 언어의 사용 패턴에 따라 중지 단어와 단어 구분이 내장되어 있습니다.
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 |
사용자 지정 언어 분석기 예시
icuFolding 및 stopword 토큰 필터를 사용하여 사용자 지정 분석기 를 만들어 지원되지 않는 언어에 대한 인덱스를 만들 수도 있습니다.
다음 인덱스 정의 예시에서는 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
필드에 대해 다음 토큰을 생성합니다.
עדיף | לצייד | את |
המכוניות | כדי | להבין |
את | הגורמים | לתאונה |