检索某个日期范围内发生的操作
Retrieve actions that happened in a date range
我已经搜索了这个问题的答案,但没有找到确切的解决方案。
我有一个简单的应用程序,我可以在其中跟踪一个人最喜欢的项目。我这样建立关系:
[:favorite]
(user) ---------------------> (item)
timestamp:xxxxxx
用户节点获得了对项目的喜爱关系,我将时间戳存储为关系属性。
同一个项目可以有多个用户收藏,也可以一个用户收藏多个项目。现在,我的用例是查找在特定日期范围内收藏的项目,例如:
(1) 过去 1 小时收藏的项目
(2) 2015 年 1 月 1 日至 2015 年 1 月 15 日收藏的项目
(3) Hour-wise 2015 年 1 月 15 日收藏的项目拆分
我正在尝试找到 return 这些结果的最优化方法。我正在为 PHP.
使用 Everyman Neo4j
我的问题是如何索引时间戳 属性(我相信这会大大提高性能)?
此外,对于上面列出的三种情况,构建查询的最佳方式是什么?
通常您会将时间建模为图中的一种树或链表结构。
但是对于您的用例,
您可以使用关系自动索引来索引时间戳 属性 然后查询它:请参阅:http://neo4j.com/docs/stable/rest-api-configurable-auto-indexes.html
我认为选择一种易于搜索和排序的格式是有意义的,例如 yyyy-mm-dd-hh
将您的 conf/neo4j.properties
更改为:
relationship_auto_indexing=true
relationship_keys_indexable=timestamp
但您必须重新索引现有数据,
开始 rel=relationship()
可以查询:
start rel = relationship:relationship_auto_index("timestamp:2015-01-*")
match (user)-[rel]->(item)
....
或
start rel = relationship:relationship_auto_index("timestamp:2015-01-*")
return startNode(rel) as user, endNode(rel) as item
数值范围是不可能的,但字符串范围是不可能的。
start rel = relationship:relationship_auto_index("timestamp:[2015-01-01-00 TO 2015-02-01-00]")
return startNode(rel) as user, endNode(rel) as item
我已经搜索了这个问题的答案,但没有找到确切的解决方案。
我有一个简单的应用程序,我可以在其中跟踪一个人最喜欢的项目。我这样建立关系:
[:favorite]
(user) ---------------------> (item)
timestamp:xxxxxx
用户节点获得了对项目的喜爱关系,我将时间戳存储为关系属性。
同一个项目可以有多个用户收藏,也可以一个用户收藏多个项目。现在,我的用例是查找在特定日期范围内收藏的项目,例如:
(1) 过去 1 小时收藏的项目
(2) 2015 年 1 月 1 日至 2015 年 1 月 15 日收藏的项目
(3) Hour-wise 2015 年 1 月 15 日收藏的项目拆分
我正在尝试找到 return 这些结果的最优化方法。我正在为 PHP.
使用 Everyman Neo4j我的问题是如何索引时间戳 属性(我相信这会大大提高性能)?
此外,对于上面列出的三种情况,构建查询的最佳方式是什么?
通常您会将时间建模为图中的一种树或链表结构。
但是对于您的用例, 您可以使用关系自动索引来索引时间戳 属性 然后查询它:请参阅:http://neo4j.com/docs/stable/rest-api-configurable-auto-indexes.html
我认为选择一种易于搜索和排序的格式是有意义的,例如 yyyy-mm-dd-hh
将您的 conf/neo4j.properties
更改为:
relationship_auto_indexing=true
relationship_keys_indexable=timestamp
但您必须重新索引现有数据,
开始 rel=relationship()
可以查询:
start rel = relationship:relationship_auto_index("timestamp:2015-01-*")
match (user)-[rel]->(item)
....
或
start rel = relationship:relationship_auto_index("timestamp:2015-01-*")
return startNode(rel) as user, endNode(rel) as item
数值范围是不可能的,但字符串范围是不可能的。
start rel = relationship:relationship_auto_index("timestamp:[2015-01-01-00 TO 2015-02-01-00]")
return startNode(rel) as user, endNode(rel) as item