忽略MongoDB文本索引中的语言

问题描述

我正在尝试在MongoDB中创建一个text index。我尝试索引的字段是捷克语(cs),不支持(因为未列出here)。

即使停用词和其他特定于语言的功能无法正常使用,我仍然希望为其编制索引。但是我遇到了错误。这是我尝试过的:

db.myCollection.createIndex( {"translate.cs.content" : "text"} )

我还尝试更改认语言:

db.myCollection.createIndex( {"translate.cs.content" : "text"},{"default_language" : "none"} )
db.myCollection.createIndex( {"translate.cs.content" : "text"},{"default_language" : "en"} )

但是所有这些方法都会给我这个错误

{
    "ok" : 0,"errmsg" : "Index build Failed: <...>: Collection myDatabase.myCollection( <...> ) :: caused 
by :: language override unsupported: cs","code" : 17262,"codeName" : "Location17262"
}

documentation说:

如果您将语言值指定为“ none”,则文本搜索将使用简单的标记化,其中没有停用词列表,也没有词干。

这就是我所需要的,我只需要能够在长字符串中搜索确切的单词。有什么方法可以使Mongo忽略该语言?

解决方法

我通过添加一个language_override来解决此问题。

db.myCollection.createIndex( {"translate.cs.content": "text"},{default_language: "none",language_override: "none"} )

原因是我在数据中的其他位置还有一个名为language的字段。