6

我收到以下错误:-

[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插件

4

3 回答 3

16

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

setParameter=textSearchEnabled=true

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

textSearchEnabled=true

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

于 2013-11-16T00:11:51.170 回答
5

MongoDB 文本搜索仍然是一个实验性功能。这就是为什么它默认被禁用并且必须手动启用的原因。您可以通过使用命令行参数启动 mongod--setParameter textSearchEnabled=true或将该行添加textSearchEnabled=true到文件 mongodb.conf 来执行此操作。

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

更新

截至2.6mongoDB 文本搜索功能的版本具有生产质量并自动启用。

于 2013-11-10T21:53:20.207 回答
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()
于 2018-05-09T09:25:09.860 回答