猫鼬,无法使用default_language创建文本索引:“无”

时间:2020-10-19 06:55:02

标签: node.js mongodb express mongoose

我尝试在猫鼬中使用$text$search创建搜索功能,但是当查询遇到mongodb英语stop words时,它卡住了。我尝试将default_language更改为none以忽略stop words列表,但是后来我意识到我无法更改default_language。

我想知道我的猫鼬总是使用default_language创建索引的方式:英语,即使我直接使用default_language: 'none'

这是我的代码:

kataSchema.index({ kata: "text" }, { default_language: 'none' });

然后当我打开mongo shell并键入db.katas.getIndexes()时,它总是向我显示以下内容:

[
    {
        "v" : 2,
        "key" : {
            "_id" : 1
        },
        "name" : "_id_"
    },
    {
        "v" : 2,
        "key" : {
            "_fts" : "text",
            "_ftsx" : 1
        },
        "name" : "kata_text",
        "background" : true,
        "weights" : {
            "kata" : 1
        },
        "default_language" : "english",
        "language_override" : "language",
        "textIndexVersion" : 3
    }
]

我还尝试删除mongo shell中的索引,然后再次运行我的代码,但是它仍然使用英语作为default_language。

我想念什么吗?我已经在各处搜索它,但仍然找不到问题。感谢您的建议。

猫鼬版本:“ ^ 5.10.0”

2 个答案:

答案 0 :(得分:1)

我想问题出在 .index 本身。.改用 createIndexes

在模型的架构中,尝试以下操作:

.
.
.
const Kata = mongoose.model('Kata', kataSchema);
Kata.createIndexes({ kata: "text" }, { default_language: 'none' });

答案 1 :(得分:1)

Mongoose 5.10.0 和MongoDB 4.4.0 存在相同的问题:

contentSchema.index(
{
    title: "text",
    shortDescription: "text",
    description: "text",
},
{
    weights: {
        title: 10,
        shortDescription: 5,
        description: 1
    },
    default_language: "german",
    name: "SearchIndex"
});
只是忽略了

权重 default_language 。更新猫鼬:

npm update mongoose

猫鼬现在的版本为 5.10.16 default_language 以及 weights 可以正常工作,而无需进行任何代码修改。

在应用新索引之前,您必须首先删除错误创建的索引。

相关问题