最近、Neo4jを使用できるようにJRuby on Railsに切り替えました。Neo4jでできることのほんの一部にすぎませんが、すでにかなり優れています。とは言うものの、私はインデックス作成と検索に関してかなり厄介な問題に遭遇しました。
Userモデルのcreated_atフィールドとPostモデルのcreated_atフィールドに':index =>:exact'を追加しました(Postモデルのcustom_dateフィールドにはすでにインデックスがあります)。
class User < Neo4j::Rails::Model
property :created_at, :type => DateTime, :index => :exact
class Post < Neo4j::Rails::Model
property :created_at, :type => DateTime, :index => :exact
property :custom_date, :type => DateTime, :index => :exact
次に、Railsコンソールにアクセスして、このコードを試しました(ドキュメントから採用しました)。
User.find( :all, :created_at => 7.days.ago .. DateTime.now ).count
そして、それは0を返しましたが、このコードではそうではないことを私は知っています:
new_users = []
User.all.each{ |user| new_users << user if user.created_at > 7.days.ago }
new_users.count
104を返します。
同様に、私が実行すると
Post.find( :all, :created_at => 7.days.ago .. DateTime.now ).count
私は0を取得しますが、実行すると
Post.find( :all, :custom_date => 7.days.ago .. DateTime.now ).count
305を取得します(投稿のcustom_dateは最初に投稿のcreated_atに設定されます)。唯一の違いは、古いデータベースに移植したときにPostモデルのcustom_dateフィールドにインデックスを配置したことですが、インデックスを追加しただけです。 created_atフィールド。
これが私の質問です:created_atの時間でユーザーと投稿を検索するにはどうすればよいですか?