首页 / JAVA / java – 在Neo4j中编制索引
java – 在Neo4j中编制索引
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 在Neo4j中编制索引,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1543字,纯文字阅读大概需要3分钟。
内容图文
![java – 在Neo4j中编制索引](/upload/InfoBanner/zyjiaocheng/802/be061e36f92240ebb4714d702f6ace51.jpg)
我想知道当需要基于某个节点类型或字段的多个indecies时,什么是更好的方法.
例如,假设我想要一个学生图表,并希望按照他们的学校和身份对其进行索引.
据我所知,每个学校都可以有这样的索引:
// add student
Index<Node> index = this.graphDb.index().forNodes(schoolName);
Node node = this.graphDb.createNode();
node.setProperty("id", studentId);
index.add(node, "id", studentId);
// get student
Index<Node> index = this.graphDb.index().forNodes(schoolName);
Node node = index.get("id", studentId).getSingle();
另一方面,我可以使用一个索引并执行以下操作:
// add student
Index<Node> index = this.graphDb.index().forNodes("schools");
Node node = this.graphDb.createNode();
node.setProperty("id", studentId);
index.add(node, schoolName + ":id", studentId);
// get student
Index<Node> index = this.graphDb.index().forNodes("schools");
Node node = index.get(schoolName + ":id", studentId).getSingle();
什么是更好的方法?
一个优于另一个的任何优势?
特别是在性能方面或存储方面,当涉及很多节点时.
谢谢
解决方法:
你的方法是完全有效的.
如果您想查询学校的所有学生,您可以使用:
Iterable<Node> pupils = index.query(schoolName + ":*");
您也可以将两个字段添加到索引中:
index.add(node, "schoolName", studentId);
index.add(node, "id", studentId);
然后通过组合查询查询它们
Iterable<Node> pupils = index.query("schoolName:"+schoolName + " AND id:"+id);
第一个是索引大小较小但第二个更强大.
性能方面它不会产生如此大的差异(但你可以测试并报告).
您还可以在图形中使用一个结构,其中学校是一个节点,并且学生通过LEARNS_AT关系附加到它上面,该关系也可以具有开始和结束时间属性,因此更容易对您的域建模.见这demo graph
内容总结
以上是互联网集市为您收集整理的java – 在Neo4j中编制索引全部内容,希望文章能够帮你解决java – 在Neo4j中编制索引所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。