错误:未启用文本搜索: - 在mongodb中

时间:2013-11-10 20:35:13

标签: node.js mongodb mongoose mongoose-plugins

我收到以下错误: -

[Error: text search not enabled]

我正在运行以下函数,该函数基本上是一个mongoose-mongodb操作。

var textSearch = require('mongoose-text-search');

exports.dbTextSearch = function () {
    console.log('dbTextSearch');
    var gameSchema = mongoose.Schema({
        name: String
      , tags: [String]
      , likes: Number
      , created: Date
    });

    gameSchema.plugin(textSearch);

    gameSchema.index({ tags: 'text' });

    var Game = mongoose.model('Game', gameSchema);

    Game.create({ name: 'Super Mario 64', tags: ['nintendo', 'mario', '3d'] }, function (err) {
    Game.textSearch('3d', function (err, output) {
        if (err) return console.log(err); // this outputs the error.
        var inspect = require('util').inspect;
      console.log(inspect(output, { depth: null }));
        });
    });
}

我正在尝试实施mongoose-text-search插件

3 个答案:

答案 0 :(得分:16)

在MongoDB 2.4中 - 要启用实验文本搜索,请使用

setParameter=textSearchEnabled=true

以下行在mongodb.conf文件中对我不起作用。

textSearchEnabled=true

编辑在MongoDB 2.6 +中默认启用。您只需要设置文本索引。

答案 1 :(得分:5)

MongoDB文本搜索仍然是一项实验性功能。这就是默认情况下它被禁用must be enabled manually的原因。您可以通过使用命令行参数--setParameter textSearchEnabled=true启动mongod或将行textSearchEnabled=true添加到文件mongodb.conf来执行此操作。

请注意,作为实验性功能,文本搜索不应在生产环境中使用。

<强>更新

从mongoDB版本2.6开始,文本搜索功能具有生产质量并自动启用。

答案 2 :(得分:0)

启动mongo时,必须指定此启动参数(在上面的答案中提到)。因此,如果您手动启动,请使用:

mongod --setParameter textSearchEnabled=true 

否则,如果mongo被deamonized,请将其放入deamon脚本中。像这样:

start()
{
  echo -n $"Starting mongod: "
  daemon --user "$MONGO_USER" $NUMACTL $mongod --setParameter textSearchEnabled=true $OPTIONS

然后你创建文本索引并检查它是否存在:

db.mycoll.createIndex( { someFieldName: "text" } );
db.mycoll.getIndexes()