我收到以下错误: -
[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插件
答案 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()