我正在尝试使用 mongoose-text-search 插件在 MongoDB 和 Node.js 上执行全文搜索。我正在关注来自https://github.com/aheckmann/mongoose-text-search的示例代码,我的代码如下所示。我不断收到一条错误消息:“错误:未启用文本搜索。未定义”我按照为 mongoose 安装插件的说明 - 出现错误,这导致我访问了 MongoDB 站点: http ://docs.mongodb.org/manual/教程/启用文本搜索。但是,在我通过键入命令启用文本搜索后:
mongod --setParameter textSearchEnabled=true
在终端中,我启动了我的应用程序并遇到了一个额外的错误。它指出:“MongoError:E11000 重复键错误索引:meddb.tweets.$id_1 dup 键:{:null} 这是错误:错误:未启用文本搜索未定义”
如果你们中的任何人遇到此错误并找到解决方法,请让我知道我缺少什么或需要更改。
var mongoose = require('mongoose');
var textSearch = require('mongoose-text-search');
var Schema = mongoose.Schema;
var twitterSchema = new Schema ({
id: {type: Number, index: {unique: true, dropDups: true}},
created_at: Date,
user: [{
id: Number,
name: String,
screen_name: String,
location: String
}],
text: String,
keywords: []
});
twitterSchema.plugin(textSearch);
twitterSchema.index({keywords: 'text' });
var Tweets = mongoose.model('Tweets', twitterSchema);
Tweets.create({text: 'flu', keywords: ['disease', 'doctor', 'shots']}, function(err){
if(err){
console.log('First error: ' + err);
}
Tweets.textSearch('shots', function(err, output){
if(err){
console.log('This is error: ' + err)
}
var inspect = require('util').inspect;
console.log(inspect(output, {depth: null}));
});
});
exports.Document = function(db) {
return db.model('Tweets');
};