Linki nie działają zarówno w odpowiedzi na pytanie, jak i w oryginalnej odpowiedzi, ale istnieje sposób na zdefiniowanie schematu, który jest obsługiwany w nowoczesnych wersjach.
Zalecanym sposobem byłoby dołączenie "language" właściwość w dokumencie lub dokumentach osadzonych obok właściwości używanej w indeksie tekstowym. Termin „obok” oznacza „na tym samym poziomie” i nie przylega konkretnie do właściwości w indeksie.
Wyglądałoby to na coś powszechnego:
{
"description": "Texto largo en español",
"language": "spanish",
"translation": [
{
"description": "Large text in Spanish",
"language": "english"
},
{
"description": "Grand texte en espagnol",
"language": "french"
}
]
},
{
"description": "The quick brown fox",
"translation": [
{
"description": "Le renard brun rapide",
"language": : "french"
}
]
}
A następnie zakładając, że używamy „domyślnego” języka indeksu tekstu „angielski”, możemy po prostu indeksować za pomocą:
db.collection.createIndex({ "description": "text", "translation.description": "text" })
MongoDB użyje wtedy "language" Właściwość pokazana w dokumencie „root” lub z „osadzone dokumenty” w tablicy, a jeśli zostanie pominięta, po prostu użyje wartości domyślnej zdefiniowanej dla indeksu. Na przykład drugi dokument tutaj nie ma właściwości języka w „root”, więc "english" zakłada się, ponieważ jest to ustawienie domyślne w indeksie.
Indeksowane elementy nie muszą być w dowolnej kolejności, co również wykazano, mając "english" wpis w "translations" tablica z osadzonymi dokumentami przy pierwszym przykładowym dokumencie. Zasady dotyczące elementów osadzonych różnią się nieco tym, że musimy dołącz "language" właściwości na osadzonych dokumentach lub rzeczywisty język używany z dokumentem „root”. W tym przykładzie dowolny osadzony dokument w tablicy bez "language" uważa się, że właściwość używa "spanish" ponieważ to jest zdefiniowane w "root".
Wyszukiwania są oczywiście wykonywane z uwzględnieniem wszystkich ścieżek obecnych w indeksie, więc zarówno w "description" i osadzony "translation.description" właściwości zgodnie z definicją tutaj. Właściwy "język wyszukiwania" jest zawsze używany, jak określono w $language opcja $text operatora, ponieważ "słowa stop" i "pochodzenie" są nadal brane pod uwagę w odniesieniu do tego i domyślnego języka indeksu ustawionego podczas tworzenia indeksu.
Wbudowany format zapewnia również łatwy punkt, z którego można pobrać informacje o języku w celu „przetłumaczenia” między dwoma językami, w przypadku których treść jest zdefiniowana dla obu omawianych języków, więc w tym przypadku jest to praktyczność „podwójna”.
Szczegółowa dokumentacja znajduje się teraz w sekcji Utwórz indeks tekstowy dla kolekcji w wielu językach jako sekcja w szerszym temacie Określanie języka dla indeksu tekstowego, który zawiera łącza do wszystkich innych szczegółów, w tym określania innego domyślnego języka w indeksie.