0

我正在尝试使用 mongo db 文本搜索,但出现以下 msg 错误 - 尽管您可以看到 db.items 中有文本索引,但没有文本索引。有什么问题?猫鼬的命令是什么?

> 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" }
4

1 回答 1

2

首先,您是从 mongo 开始的textSearchEnabled=true(请参阅启用文本搜索)?

如果您使用的是配置文件(例如/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().

于 2013-07-17T15:51:51.047 回答