[英]Mongoose, cannot create text index with default_language: 'none'
我尝试在 mongoose 中使用$text
和$search
创建搜索功能,但是当查询遇到 mongodb english stop words
时它卡住了。 我尝试将我的 default_language 更改为 none 以忽略stop words
列表,但后来我意识到我无法更改 default_language。
我想知道我的猫鼬总是使用 default_language: english 创建索引的方式,即使我直接使用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”
我猜问题来自.index本身.. 使用createIndexes代替。
在您模型的架构中,试试这个:
.
.
.
const Kata = mongoose.model('Kata', kataSchema);
Kata.createIndexes({ kata: "text" }, { default_language: 'none' });
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"
});
weights和default_language被忽略了。 更新猫鼬:
npm update mongoose
Mongoose 现在是5.10.16版, default_language和权重都可以正常工作,无需任何代码修改。
在应用新索引之前,您必须先删除错误创建的索引。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.