3

mongoose-text-search プラグインを使用して、MongoDB と Node.js で全文検索を実行しようとしています。https://github.com/aheckmann/mongoose-text-searchのサンプル コードに従っています。コードを以下に示します。「Error: text search not enabled. undefined」というエラーが表示され続けます。Installing plugins for mongoose - Getting errorの指示に従って、MongoDB サイトに移動しました: http://docs.mongodb.org/manual/チュートリアル/テキスト検索を有効にします。ただし、次のコマンドを入力してテキスト検索を有効にした後:

mongod --setParameter textSearchEnabled=true

ターミナルでアプリケーションを起動すると、追加のエラーが発生します。「MongoError: E11000 duplicate key error index: meddb.tweets.$id_1 dup key: { : null } This is error: Error: text search not enabled undefined」

このエラーに遭遇し、その回避策を見つけた方がいらっしゃいましたら、不足しているものや変更が必要なものをお知らせください。

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');
};
4

1 に答える 1