mongodb文本搜索错误没有文本索引

时间:2013-04-13 15:16:03

标签: mongodb search text mongoose

我正在尝试使用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" }

1 个答案:

答案 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()