Řešení:
Nastavte výchozí_jazyk
a language_override
na stejnou doslovnou hodnotu (ve vašem případě "en").
Jak jsem se sem dostal...
Narazil jsem na stejný problém, také na Mongo 2.6.1.
V mém případě jsem vytvořil index pomocí language_override
odkazující na jazykové pole, kde již byly dokumenty s nepodporovanými hodnotami (např. 'ar' – arabština).
Zde je návod, jak jsem index vytvořil:
db.users.ensureIndex({
"displayName": "text",
"about": "text",
"email": "text"
}, {
"name": "users_full_text",
"default_language": "en",
"language_override": "language"
});
Doufal jsem, že se vrátí k default_language
při přepsání jazyka
hodnota není podporována, ale zjevně ne. Zde je to, co říká Mongo:
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 3,
"ok" : 0,
"errmsg" : "language override unsupported: ar",
"code" : 17262
}
OK, dobře, takže index nebyl vytvořen, ale měl bych být schopen ho vytvořit bez language_override, že? Špatně – mongo mi zobrazuje stejnou chybu i když již nemám zadaný jazykový_přepis .
Zdá se, že neúspěšný pokus o vytvoření indexu po sobě zanechal nějakou nefunkční verzi indexu, která se nikde nezobrazuje, takže ji nemohu zahodit (neobjevuje se v db.users.getIndexes() a vypuštění podle názvu nefunguje).
Nakonec se mi podařilo opravit index nastavením language_override
na doslovnou hodnotu 'en', takto:
db.users.ensureIndex({
"displayName": "text",
"about": "text",
"email": "text"
}, {
"name": "users_full_text",
"default_language": "en",
"language_override": "en"
});
... na což Mongo odpovídá:
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 3,
"numIndexesAfter" : 4,
"ok" : 1
}
Hurá.