neo4j可以对node和relationship中的属性建立索引,索引中的node(relationship)和属性对key-value为多对多的关系。一个node(relationship)可以在某索引中存储多个属性对,一个属性对也可以对应到多个node(relationship)。
代码:
Node node1 = graphDb.createNode();
node1.setProperty("name","easypoint");
Node node2 = graphDb.createNode();
node2.setProperty("name","csdn");
nodeIndex.add(node1,"name",node1.getProperty("name"));
nodeIndex.add(node1,"name","haha");
nodeIndex.add(node2,"name",node2.getProperty("name"));
nodeIndex.add(node2,"name","haha");
for(Node node :nodeIndex.get("name","haha")){
System.out.println(node.getProperty("name"));
}
结果:
easypoint
csdn
在neo4j中,索引可以分为两类:neo4j本身既是关于relationship的索引实现;基于独立索引引擎,如Apache Lucene的索引机制。通常情况下,我们所说的索引指第二种情况。按照索引的对象可以将索引分为两类:基于node的索引和基于relationship的索引。
与oracle等关系型数据库不同的是,neo4j中索引的维护由用户自行管理(索引内容的增删改)。索引的维护必须在事务范围内。每个索引具有一个名称,neo4j根据名称来查找或者创建索引。
维护索引时,有一点需要特别注意:更新索引时,需要手工删除对应的更新项,然后在添加更新后的项; 如下所示:
// create a node with a property
// so we have something to update later on
Node fishburn = graphDb.createNode();
fishburn.setProperty( "name", "Fishburn" );
// index it
actors.add( fishburn, "name", fishburn.getProperty( "name" ) );
// update the index entry
// when the property value changes
actors.remove( fishburn, "name", fishburn.getProperty( "name" ) );
fishburn.setProperty( "name", "Laurence Fishburn" );
actors.add( fishburn, "name", fishburn.getProperty( "name" ) );
如果,不删除旧项,则会同时存在指向fishburn的两个key-value。
索引的查询可以使用GET方法,也可以使用QUERY方法,相对与get,query方法功能更强大一些。get方法进行精确的key-value匹配;QUERY
Relationship persephone = roles.get( "name", "Persephone" ).getSingle();
for ( Node movie : movies.query( "title:*Matrix* AND year:1999" ) )
{
// This will return "The Matrix" from 1999 only.
}
创建索引时,通过api可以制定索引的配置选项。如下所示,配置索引支持fulltext检索
Index<Node> fulltextMovies = index.forNodes( "movies-fulltext",
stringMap(IndexManager.PROVIDER, "lucene", "type", "fulltext") );
Node node1 = graphDb.createNode();
node1.setProperty("name","easypoint and abb");
fulltextMovies.add( node1,"name",node1.getProperty("name"));
for(Node node :fulltextMovies.query( "name", "and" )){
System.out.println(node.getProperty("name"));
}
总结:neo4j提供了索引机制,与关系数据库相比,需要编程人员干预的内容较多,也正是因此,其灵活性是比较强的,但无疑增加了程序人员的工作量。
分享到:
相关推荐
任务14: Neo4j的索引.mp4
4. 在Java应用中使用Neo4j 5. Neo4j远程客户端库 6. 遍历查询框架 7. 数据模型范例 8. 多语言支持 9. 在Python应用中使用Neo4j 10. 扩展Neo4j服务器 III. 参考 11. 性能 12. 事务管理 13. 数据...
Neo4j 2.0 MapDB 索引提供程序为 Neo4j 2.0 实现模式索引提供程序,使用基于标签的索引,这是一种使用压缩和自定义序列化的高性能持久映射实现。 它还支持架构索引提供程序为可重复读取所需的快照。 mvn clean ...
reactiveneo, Neo4j的反应式安全 Scala 驱动器 reactiveneo 用于 Neo4j的反应式安全 Scala DSL table-内容图模型节点关系索引查询库强制执行强类型检查,对查询格式施加... 查询中使用的每个 node 和关系都需要定义和命
3、它通过使用Apache Lucence支持索引 4、它支持UNIQUE约束 5、它它包含一个用于执行CQL命令的UI:Neo4j数据浏览器 6、它支持完整的ACID(原子性,一致性,隔离性和持久性)规则 7、它采用原生图形库与本地GPE(图形...
它将安装以下组件: 编译器:没有持久性数据存储在内存中:没有持久性数据存储在内存中TODO:为键 myid 配置自动索引并在 neo4j 中输入如果要连接到 oracle 数据库,则必须在 lib/ 中安装 jdbc jar。 你可以在找到...
它在Neo4j中索引Git存储库,并实现多个查询以选择和处理存储库数据。 有关完整说明,请参见。 X 1.安装和首次运行 1.1先决条件 唯一的要求是在系统上安装Python> = 3.5和Docker。 1.2使用pip安装 可以使用pip...
特性: 1.neo4j自带的服务端对中文建立的内置索引分词粒度以字为单位,不太符合实际需求,而且cypher语法没有对分词器的选择操作语句,修改采用elastic做中间业务处理索 - 不懂运行,下载完可以私聊问,可远程教学 该...
从Neo4j服务器中删除neo4j-lucene-index.jar和所有lucene jar。 # build mvn clean install dependency:copy-dependencies # set your neo4j server path export NEO=/path/to/neo4j-community-2.3.0 $NEO/bin/...
Neo4j Spatial是一个促进中空间数据的导入,存储和查询的。 该项目手册作为部署在本地版本中。 历史 该库开始于2010年初,是Neo-Technology与之间的协作愿景作为其2010年Google Summer of Code(GSoC)项目的一...
elasticsearch-river-neo4j.zip,一个用于弹性搜索的river插件,它提供了一种为neo4j图形数据库建立索引的简单方法selasticsearch river插件
只要您使用 text 属性,您的测试就可以在节点上使用全文自动索引。 Neo4j 2.1.6 欢迎使用高性能图形数据库 Neo4j 2.1.6 版。 这是 Neo4j 的社区发行版,包括您开始构建可以建模、持久化和探索类图数据的应用程序所...
如果要在Python 2.7中使用gREST,则需要坚持使用旧的版本。 对于Python 3.x及更高版本,请使用从2.xx或master分支开始的最新版本。 谁在使用gREST? 如果您在项目上使用gREST,请在告诉我或。 产品特点 支持的HTTP...
因此,您无法在同一事务中创建节点并将其添加到手动全文或空间索引中。 此扩展使其他 REST 操作可以参与由密码端点启动的事务。 安装 您可以使用mvn package构建它并将target/transaction-participation-2.2.2-1.0...
运行工具主要方法在类 org.amanzi.neo4j.ForceUpgrade 中。 使用作为要升级的数据库的目录(相对路径)的参数调用它。 使用 maven,您可以按如下方式执行此操作: mvn exec:java -Dexec.mainClass="org.amanzi.neo4j...
PopotoResource添加了第二个端点,以提供config/config.js ,它使用标签,属性和索引信息为popoto的可视化提供必要的配置。 请注意,您必须为此演示禁用身份验证,因为我尚未添加获取用户名/密码的方法。 您可以...
在图结构数据的存储和查询处理中,针对顶点邻域非常密集的场合,如何...最后采用图数据库Neo4j对路径索引存储空间和查询性能进行了测试。结果表明,虽然路径索引会占用存储空间,但是能够提高特定的查询处理的性能。
在浏览器中使用 Neo4jMapper 由于浏览器端和服务端维护太多,浏览器支持暂时停止。 但是 Neo4jMapper 应该仍然可以在浏览器中工作。 脚本 $ npm run doc : 在docs/创建源代码文档(使用 docco) $ make test-...
PHP + Neo4j 空间插件 将与一起使用的快速而肮脏的示例代码。 Neo4j Spatial 插件是所有 Graph Story 计划的标准配置。 安装 克隆回购 运行composer install ...如果需要,使用 Graph Story 控制台中
面对图数据管理中查询耗时高和空间占比大的难题,提出一种图数据二 级索引压缩算法——GComIdx。该算法利用有序的键值(Key-Value)结构将相关节点和边尽可能地以相邻的方式 存储,并为高效的属性查询和邻居查询分别...