0

*ここでのMongo初心者(WindowsでMongo C#ドライバーを使用)

こんにちは、私は数値次元の組み合わせを適用するためにMongoを評価しています。私は何百もの数値フィールドを持っており、ブールクエリを作成します(私はLucene、Solrなどと幅広く連携しているため、用語を許します)。Solrの結果は、関連性の順に並べられます。つまり、複数のディメンションに沿って最も近い一致が続き、次に最も近いものが続きます。

例えば:

Doc1: 
 - NumField 1 : 9.9
 - NumField 2: 8.2

Doc2:
 - NumField 1 : 5.9
 - NumField 2: 8.9


**Query**
 - NumField 1: Between 7 & 10
 - NumField 2: Between 8 & 10

I would want Doc1 to show up before Doc2.

同様の構成を使用してMongoにクエリを実行すると、関連性のある順序が表示されない結果が得られます。クエリ結果を「関連性」で並べ替える方法はありますか?

ps私が知っているのは、クライアントのカーソルから結果をいつでも並べ替えることができることですが、可能であればサーバーエンドでそれを実行したいと思います。

4

1 に答える 1

1

Mongoにはスコアベースの並べ替えはなく、インデックスが作成された順序でドキュメントが返されます(クエリがインデックスにヒットしたと仮定)。

あなたの最善の策はおそらくクライアントでソートすることです。本当に本当にMongoでやりたい場合は、map / reduce機能を使用してドキュメントにスコアを付け、出力コレクションをクエリしてスコアで並べ替えることができます。しかし、それはおそらく良い考えではありません。

于 2012-07-27T23:01:38.950 に答える