2016-06-27 3 views
0

をもとにします。のMongoDB(マングース)クエリがゲームタイトルを検索、ソート、私はデータのためにマングースとのMongoDBを使用して、ノード/ Expressでアプリケーションを構築しています(実世界/ SANE)関連

私は数十ゲームの何千ものを持っているモンゴの「ゲーム」のコレクションを持っています。

各ゲームには、「タイトル」を持っている、と私はタイトルを検索できるようにしたいと思います(例えば、ハロー2)とユーザフレンドリーな順序で結果が表示されています。

ハロ2がハロ5の前に来なければならない、と無関係な結果が含まれるべきではありません。

また、非常識な結果を除外する必要があります。 「ハロー戦闘進化型」の問合せは、最高得点結果として「進化型」を返すべきではありません。

結局、私は私のノードのアプリでマングースからこれを照会することがありますが、プロトタイピングのプロセスのために、私はただのmongoコンソールを使用してきた...ここで

は、私がした内容のサンプルです(最終的には失敗した)試み:

db.games.find(
    {$text: {$search: "halo combat evolved"}}, 
    {score: {$meta: "textScore"}} 
) 

そしてここでは、スコアによってソート結果の印刷画面である:

Bad results

答えて

0

まずOすべての場合、テキストプロパティを参照する "テキスト"インデックスを定義する必要があります。これは、クエリの速度を向上させるためです。

db.games.ensureIndex({title: 'text'}) 

これは、しかし、あなたはあなたのコレクションは本当に大きなであれば、これは長い時間がかかる可能性があることを認識する必要があり、あなたのゲームのコレクションのタイトルプロパティのインデックスを作成します。

あなたは、インデックスを作成したら

db.games.find(  
    {$text: {$search: "halo combat evolved"}}, 
    {score: {$meta: "textScore"}} 
).sort({ score: { $meta: "textScore" } }) 

を次のようにあなたが見ることができるように、今あなたがコレクションを照会することができ、私は結果をソートするために、sortメソッドを使用しているだけである関連性に従ってあなたの質問との偶然の割合。

mongoでテキストを検索するときに使用できる他の設定があります。ここには良いリソース情報がありますmongo text index

関連する問題