我正在尝试使用mongo db文本搜索但我得到以下msg错误 - 没有文本索引 虽然您可以看到db.items中有文本索引。有什么问题? mongoose中的命令是什么?
> db.items.getIndexes()
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"ns" : "db.items",
"name" : "_id_"
},
{
"v" : 1,
"key" : {
"type" : "text",
"color" : "text",
"category_A" : "text",
"category_B" : "text",
"category_C" : "text"
},
"ns" : "db.items",
"name" : "type_text_color_text_category_A_text_category_B_text_category_C_text",
"sparse" : false,
"background" : false
}
]
> db.items.runCommand( "text",{search:"D"})
{ "ok" : 0, "errmsg" : "no text index for: db.items" }
答案 0 :(得分:2)
首先,您是否使用textSearchEnabled=true
启动了mongo(请参阅Enable text search)?
如果您使用的是配置文件(例如/etc/mongodb.conf
),则正确的行应为:
setParameter = textSearchEnabled=true
其次,您的索引看起来像常规索引而不是文本。请发布您使用的命令。
如果要测试文本索引功能,请尝试以下操作:
删除当前索引(可能会干扰您将创建的新索引)
db.items.dropIndex("type_text_color_text_category_A_text_category_B_text_category_C_text")
并创建一个新的
db.items.ensureIndex( {type:"text"}, {unique: false, name: "type_index"})
然后再次尝试搜索。
您可能还需要运行db.items.reIndex()
。