Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Menu Docs

Analisadores de idioma

Use analisadores específicos de idioma para criar índices personalizados para um idioma específico. Cada analisador de idioma tem palavras vazias e divisões de palavras integradas com base nos padrões de uso desse idioma.

O MongoDB Search oferece os seguintes analisadores de idioma:

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 é um analisador genérico de chinês, Japonês e Coreano

2 kuromoji é um analisador Japonês

3 morfologik é um analyzer polonês

4 nori é um analisador coreano

5 smartcn é um analisador chinês

Considere uma coleção denominada cars com os seguintes documentos:

{
"_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": "הזמן הטוב ביותר לעשות זאת הוא מיד לאחר שמילאת דלק."
}
}

A seguinte definição de índice de exemplo especifica um índice no campo subject.fr utilizando o analisador french :

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

A seguinte consulta de pesquisa do MongoDB procura a string pour no campo subject.fr. Para executar esta consulta, conecte-se ao seu cluster usando mongosh e mude para o banco de dados que contém a coleção cars.

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

A query anterior não retorna resultados ao usar o analisador french , pois pour é uma palavra vazia embutida. Usando o analisador standard , a mesma query retornaria os dois documentos.

A seguinte consulta de pesquisa do MongoDB procura a string carburant no campo subject.fr. Para executar esta consulta, conecte-se ao seu cluster usando mongosh e mude para o banco de dados que contém a coleção cars.

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

A pesquisa do MongoDB retorna um documento com _id: 1 nos resultados porque a query correspondeu a um token que o analisador lucene.french criou para o documento. O analisador lucene.french cria os seguintes tokens para o campo subject.fr no documento com _id: 1:

meileu

moment

fair

est

imediat

aprè

fait

plein

carburant

Você também pode criar índices para idiomas não suportados criando um analisador customizado com os filtros de token icuFolding e stopword .

O exemplo de definição de índice a seguir especifica um índice no campo subject.he usando um analisador personalizado chamado myHebrewAnalyzer para analisar e criar tokens para texto hebraico:

{
"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"
}
}
]
}

A seguinte consulta de pesquisa do MongoDB procura a string המכוניות no campo subject.he. Para executar esta consulta, conecte-se ao seu cluster usando mongosh e mude para o banco de dados que contém a coleção cars.

db.cars.aggregate([
{
$search: {
"text": {
"query": "המכוניות",
"path": "subject.he"
}
}
},
{
$project: {
"_id": 0,
"subject.he": 1
}
}
])

O MongoDB Search retorna um documento com _id: 1 nos resultados porque a query correspondeu a um token que o analisador myHebrewAnalyzer criou para o documento. O analisador myHebrewAnalyzer cria os seguintes tokens para o campo subject.he no documento com _id: 1:

עדיף

לצייד

את

המכוניות

כדי

להבין

את

הגורמים

לתאונה

Você também pode criar um índice que usa vários analisadores de linguagem para executar uma pesquisa multilíngue.

A seguinte definição de índice de exemplo especifica um índice com mapeamento dinâmico na coleção sample_mflix.movies. A definição aplica o analisador de idioma lucene.italian para indexar o campo fullplot e usa a opção multi para especificar lucene.english como um analisador de idioma alternativo. O MongoDB Search usa o analisador de idioma lucene.english padrão para todos os outros campos que ele indexa dinamicamente na coleção movies.

{
"analyzer": "lucene.standard",
"mappings": {
"dynamic": true,
"fields": {
"fullplot": {
"type": "string",
"analyzer": "lucene.italian",
"multi": {
"fullplot_english": {
"type": "string",
"analyzer": "lucene.english",
}
}
}
}
}
}

A query do MongoDB Search a seguir usa o operador composto para consultar a coleção em vários idiomas. Para executar esta query, conecte-se ao seu cluster usando mongosh e mude para o banco de dados sample_mflix.

O operador composto contém as seguintes cláusulas:

  • must cláusula pesquisa tramas de filmes em inglês e italiano que contêm o termo Bella usando o operador de texto

  • mustNot cláusula exclui filmes lançados entre os anos 1984 a 2016 usando o operador de intervalo

  • should cláusula especifica preferência pelo gênero Comedy usando o operador de texto

db.movies.aggregate([
{
$search: {
"index": "multilingual-tutorial",
"compound": {
"must": [{
"text": {
"query": "Bella",
"path": { "value": "fullplot", "multi": "fullplot_english" }
}
}],
"mustNot": [{
"range": {
"path": "released",
"gt": ISODate("1984-01-01T00:00:00.000Z"),
"lt": ISODate("2016-01-01T00:00:00.000Z")
}
}],
"should": [{
"text": {
"query": "Comedy",
"path": "genres"
}
}]
}
}
},
{
$project: {
"_id": 0,
"title": 1,
"plot": 1,
"genres": 1,
"runtime": 1,
"fullplot": 1,
"released": 1,
"score": { "$meta": "searchScore" }
}
}
])