假设有员工节点将薪水作为其中一个属性。使用Scala-Neo4j Api获取工资排名前5的员工节点的最快方法是什么?
答案 0 :(得分:3)
您可以将员工的工资作为财产编制索引。 在这种情况下,您只需获取索引然后查询其成员。在Java中看起来像:
db.index().forNodes('salaries').query(YOURQUERY)
您可以使用标签(如果您使用Neo4j 2)将节点标记为员工,并仅在这些节点中搜索。
您还可以在“员工”上设置的每个员工上设置一个类型属性,以搜索所有节点(但如果您有许多节点则需要时间)
另一个解决方案是在员工和超级节点“雇员”之间创建一个关系is_a,但根据您的使用情况,它可能会造成麻烦(参见http://www.aleksavukotic.com/2011/07/neo4j-super-nodes-and-indexed.html)。
这些是一些不同的搜索方式。有些在某些情况下更快,你必须根据你的需要调整它。 如果您正在讨论必须进行搜索的查询,则Cypher和Javadoc上的文档应该会有所帮助。