【问题标题】:How to return all newest nodes from neo4j?如何从 neo4j 返回所有最新节点?
【发布时间】:2013-01-18 21:47:38
【问题描述】:

是否可以查询 neo4j 的最新节点?在这种情况下,索引属性“timestamp”记录每个节点上的时间(以毫秒为单位)。

我发现的所有密码示例都涉及图形类型查询-“从节点 n 开始并遵循关系。返回按一个字段排序的结果集的一般最佳方法是什么?这在图形数据库中是否可行,例如节点4j?

【问题讨论】:

    标签: lucene neo4j cypher gremlin


    【解决方案1】:

    在嵌入式 Java API 中,可以使用 Lucene 构造添加排序。

    http://docs.neo4j.org/chunked/milestone/indexing-lucene-extras.html#indexing-lucene-query-objects http://blog.richeton.com/2009/05/12/lucene-sort-tips/

    在服务器模式下,您可以将 ?order 参数传递给 lucene 查找查询。

    http://docs.neo4j.org/chunked/milestone/rest-api-indexes.html#rest-api-find-node-by-query

    取决于您如何索引数据(不是数字,因为 lucene 查询语法解析器和数字搜索存在问题 :( ),在密码中您可以这样做:

    start n=node:myindes('time: [1 to 1000]') return n order by n.time asc
    

    还有更多的图形方法可以做到这一点,例如通过将事件与NEXT 关系链接并从此列表中返回头和下 n 个元素

    http://docs.neo4j.org/chunked/milestone/cypher-cookbook-newsfeed.html

    或者为时间创建一个树形结构:

    http://docs.neo4j.org/chunked/milestone/cypher-cookbook-path-tree.html

    【讨论】:

    • 是的,谢谢,这个答案让我想出了start n=node:node_auto_index('timestamp:[0 TO NOW]') return n order by n.timestamp desc limit 10;,它将搜索整个索引并按时间顺序返回10个最新节点
    【解决方案2】:

    是的,这是可能的,并且有一些不同的方法可以做到这一点。

    您可以使用时间戳属性和经典索引,并按该属性对结果集进行排序。或者您可以创建一个基于时间的图中索引,例如 f.e.在 Peter 的博文中描述:

    http://blog.neo4j.org/2012/02/modeling-multilevel-index-in-neoj4.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多