1
class Job
  field :occupation, :type => String
  field :experience, :type => String
end

私のAPIファイル:

get :searches do
  Cv.search({query: "*#{params[:q]}*"}).map{ |cv| {id: cv.id, text: cv.occupation } }
end

これにより、jsonファイルが生成されます。

[{"id":"513dbb61a61654a845000005","text":"industrial engineer"},{"id":"513a11d4a6165411b2000008","text":"javascript engineer"}]

私はデータベースとしてmongodbを使用し、orm/odmとしてmongoidを使用しています。

これは10、100、または1000の結果で正常に機能しますが、私の質問は、大規模なデータコレクション* 1.000.000または2.000.000の結果に対してAPIクエリを最適化できるかどうかです。*

4

1 に答える 1

0

クエリに応じて、クエリを実行するoccupation場合は、インデックスを作成する必要がありますoccupation

class Job
  include Mongoid::Document
  field :occupation, :type => String
  field :experience, :type => String
  index({ occupation: 1 })
end

Mongoidは自動的に作成してインデックスを作成する_idため、データベースインデックスが使用可能なRAMを超え始めない限り、クエリに常にそれを含めると高速のままになります。

Job.where(:occupation => "javascript engineer")インデックスを使用します

于 2013-03-15T19:38:15.897 に答える