【问题标题】:Problems with Neo4j.rb and node_auto_indexNeo4j.rb 和 node_auto_index 的问题
【发布时间】:2013-09-27 09:33:06
【问题描述】:

我的 neo4j rails 项目有一些问题。我试图让查询工作,但我不断收到Index 'node_auto_index' does not exist。我发现 this link 如果您正在运行单独的 neo4j 服务器,它似乎可以解决这个问题。但是我不是,我使用的是 neo4j.rb gem,它为我解决了所有这些问题,所以任何地方都没有 neo4j.properties 文件。

虽然我在config/application.rb 中镜像了 neo4j.properties,但是当我尝试执行config.neo4j.node_auto_indexing = true 时,它并没有帮助。

我正在尝试执行的密码查询是这样完成的:

@q = Neo4j._query("CYPHER 1.9 START n=node:node_auto_index('name:*{query}*') 
                  MATCH (n)-[r:CONNECTED*0..6]-(tag) 
                  RETURN reduce(sum = 1, ni IN r: sum * ni.price) LIMIT 6", 'query' => params[:query])
#I have tried with and without the "CYPHER 1.9" part.

我该如何解决这个问题?有没有一种 lucene 方式来做同样的请求?请注意reduce 的使用,这很重要。

有没有办法让 node_auto_index 在 Neo4j.rb 中工作?

任何帮助将不胜感激!


版本:

  • jRuby 1.7.4
  • gem 'rails', '3.2.14'
  • gem 'neo4j', '2.3.0-java'

【问题讨论】:

    标签: ruby-on-rails ruby neo4j cypher


    【解决方案1】:

    您必须先初始化自动索引,然后才能查询它。如果您的数据库不是太大,请尝试运行:

    start n=node(*) 
    set n.name=n.name;
    

    另外,我注意到您正在将 reduce 中的价格相乘——看起来您正在计算一个总和,因此您可能想要使用 + 运算符。

    【讨论】:

    • 我遇到了一些问题。我收到property name does not exist on Node[0]。添加where id(n) <> 0 时,Node[1] 出现同样的问题。知道如何解决这个问题吗?而且,是的,乘法是正确的。我不是在说总和,而是在用这些权重做一些事情。
    • 是的,您可能需要检查该属性是否存在。 start n=node(*) where has(n.name) set n.name=n.name;
    • 不幸的是,这对node_auto_index 没有帮助。
    • 您还需要在初始配置的自动索引中设置要索引的键。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多