前提条件でテーブルのフィールドを作ります:はMongoDBのテキスト検索可能
apiRouter.get('/api/searchPosts', function(req, res, next){
postModel.find(
{ $text : { $search : req.query.text } },
{ score : { $meta: "textScore" } }
)
.sort({ score : { $meta : 'textScore' } })
.exec(function(err, posts) {
if(posts){
res.json({
posts : posts
});
} else {
res.send('Post does not exist');
}
});
});
私が達成しようとしていること:
私は私の投稿テーブル内のフィールドを作りたいがテキストが検索可能タイトルと呼ばれます。
マイスタック:
MongoDBは、(マングース有する)NodeJS、角
私のアプローチ:
:前提条件で述べたよう、Iラインを追加しました
postSchema.index({title: 'text'});
さらに、以下のコマンドを端末で1回実行しましたコレクションが作成されています:
db.posts.createIndex({"title":"text"})
問題:私はURLからこれをアクセスすると、それは最初に動作しますが、数週間後に、それは私が得る(動作を停止し
「ポストは存在しません。 '何も変更せずに!)。それは、その後数週間などのために働いて開始し
db.posts.createIndex({"title":"text"})
:それは再び作業を取得するために、私はコレクションを削除し、新鮮なものを作ると、コマンドを実行する必要があります。
私は間違っていますか?私はこれらの数週間で何が起こるかについての傾向を見ていない。私はこの問題に数週間立ち往生していますので、誰かが助けてくれれば非常に感謝しています。
おかげで、 Shayan
私はそこで何をするのでしょうか、それは「Post does not exist」を返す代わりに、私はそのエラーから何かを返します(実際のエラーと思われます)。たぶんあなたはタイムアウトやこれに似た何かを得ているでしょう。確認するMongoログなどはありますか? –
エラーのある素晴らしい提案。私はちょうど1年のための開発に関与しているので、noobの間違いを言い訳してください。 エラー:エラー:MongoError:$ textクエリでテキストインデックスが必要ですが、すでに行っています。どういうわけか、mondoDB自身が私がコマンドを実行したことを忘れてしまっています。ログにも何かがあるかどうかがわかります。 –
ちょっと@AndreiNeagu - 私は以下の私の答えを掲載しました。提案していただきありがとうございます。将来の視聴者のために何かが再び壊れた場合、この投稿を更新しておきます。 –