在Rails上使用Neo4j和jRuby索引旧数据

在Rails上使用Neo4j和jRuby索引旧数据,neo4j,jrubyonrails,Neo4j,Jrubyonrails,我们最近在Rails上切换到JRuby,这样我们就可以使用Neo4j了,尽管我们只是初步了解了Neo4j的功能,但它已经非常棒了。尽管如此,我在索引和查找方面遇到了一个相当棘手的问题 我刚刚将“:index=>:exact”添加到我的用户模型的created_at字段和我的帖子模型的created_at字段中(在我帖子模型的自定义_date字段中已经有一个索引): 它返回了0,我知道不是这样的代码: new_users = [] User.all.each{ |user| new_users &

我们最近在Rails上切换到JRuby,这样我们就可以使用Neo4j了,尽管我们只是初步了解了Neo4j的功能,但它已经非常棒了。尽管如此,我在索引和查找方面遇到了一个相当棘手的问题

我刚刚将“:index=>:exact”添加到我的用户模型的created_at字段和我的帖子模型的created_at字段中(在我帖子模型的自定义_date字段中已经有一个索引):

它返回了0,我知道不是这样的代码:

new_users = []
User.all.each{ |user| new_users << user if user.created_at > 7.days.ago }
new_users.count
我得到0,但当我跑的时候

Post.find( :all, :created_at => 7.days.ago .. DateTime.now ).count
Post.find( :all, :custom_date => 7.days.ago .. DateTime.now ).count
我得了305分。(帖子的自定义日期最初设置为帖子的created_at。)唯一的区别是,当我们移植到旧数据库时,我在帖子模型的自定义日期字段上设置了索引,而我只是将索引添加到created_at字段


我的问题是:我如何按用户创建的内容搜索我的用户和帖子?

问题是旧数据没有lucene索引。您仅声明了索引,但未更新旧节点。您需要在所有旧节点上使用
add_索引

你应该这样做:

Neo4j::Transaction.run do
User.all.each do | User|
#由于在上创建了一个类型转换器,我们需要查找数据
#因为它存储在neo4j中。
val=User.\u转换器(:created\u at).to\u java(User[:created\u at])
user.add_索引(:created_at,val)
结束
结束
请参阅RSpec以了解此信息

我还创建了一个github问题,因为我认为这样做应该容易得多-

欢迎拉取请求:)


顺便说一句,在旧的0.4.6版本的neo4j中,支持通过迁移实现这一点。

工作得非常好!非常感谢。我会尝试帮助创建一个模型。reindex!方法,但我只是一个低级的前端开发人员/设计师,被迫作为后端工程师投入服务;你不会希望我在你的代码库的10英尺半径内。
Post.find( :all, :created_at => 7.days.ago .. DateTime.now ).count
Post.find( :all, :custom_date => 7.days.ago .. DateTime.now ).count