質問

Mongoose-Text-Searchプラグインを使用して、MongoDBおよびnode.jsで全文検索を実行しようとしています。私はから例のコードに従っています https://github.com/aheckmann/mongoose-text-search そして、私のコードを以下に示します。エラーが表示され続けます:「エラー:テキスト検索が有効になっていない。未定義」 マングース用のプラグインのインストール - エラーが発生します, 、それが私をmongodbサイトに導きました: http://docs.mongodb.org/manual/tutorial/enable-text-search。ただし、コマンドを入力してテキスト検索を有効にした後:

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');
};
役に立ちましたか?

解決

mongoose-text-search プラグインは私のために働いています。設定しなければなりませんでした textSearchEnabledtrue. 。起動時のパラメーターとして試していませんでしたが、これは私のMongodインスタンスがすでに実行されていたときに機能しました。

use admin
db.runCommand({'setParameter':1,"textSearchEnabled":true})
use <my db>
<my db>.<my colleciton>.ensureIndex({"$**":"text"}) //Beware! "$**" indexes the entire document

また、MongoのFTSの代わりにElasticSearchの使用を検討することをお勧めします。 MongoのFTSソリューションはです 生産準備ができていません (警告を参照してください)。また、ElasticSearchの経験は限られていますが、非常に印象的でした。

ElasticSearchルートに行くことを選択して、それでもMongoを使用したい場合は、適切なオプションがいくつかあります。

  • a , 、オンにする必要があります レプリカセットしたがって、川はオプログを監視できます( ウィキ)
  • MongooSastic, 、クエリのためにマングースにうまく接続し、MongoとESの両方に書き込むことにより、ESをMongoと同期させます。

アップデート2.6 Mongoにはデフォルトでテキスト検索が有効になっているためです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top