hugegraph属性解释

示例一:
// Define schema
schema.propertyKey(“name”).asText().ifNotExist().create();
schema.propertyKey(“age”).asInt().ifNotExist().create();
schema.propertyKey(“city”).asText().ifNotExist().create();

schema.vertexLabel(“person”)
.properties(“name”, “age”, “city”)
.primaryKeys(“name”)
.nullableKeys(“age”, “city”)
.ifNotExist()
.create();

properties:通过 properties(…) 方法设置过的属性,默认全都是不可为空的,也就是在创建顶点时该属性必须赋值
primaryKeys: PrimaryKey 则允许用户从 VertexLabel 的属性中选择若干主属性作为区分的依据,HugeGraph 内部会根据主属性的值拼接生成 Id。idStrategy 默认使用 Automatic的,但如果用户没有显式设置 idStrategy 又调用了 primaryKeys(…) 方法设置了主属性,则 idStrategy 将自动使用 PrimaryKey
nullableKeys(String… properties):为避免这样的强约束,用户可以通过 本方法设置若干属性为可空的,这样添加顶点时该属性可以不赋值。
注意:primaryKeys 和 nullableKeys 不能有交集,因为一个属性不能既作为主属性,又是可空的

enableLabelIndex: 用户可以指定是否需要为label创建索引。不创建则无法全局搜索指定label的顶点和边,创建则可以全局搜索,做类似于g.V().hasLabel(‘person’), g.E().has(‘label’, ‘person’)这样的查询, 但是插入数据时性能上会更加慢,并且需要占用更多的存储空间。此项默认为 true

frequency: 字面意思是频率,表示在两个具体的顶点间某个关系出现的次数,可以是单次(single)或多次(frequency),默认为single

sortKeys: 当 EdgeLabel 的 frequency 为 multiple 时,需要某些属性来区分这多次的关系,故引入了 sortKeys(排序键);

注意: sortKeys 和 nullableKeys也不能有交集

注意:当frequency为multiple时必须要设置sortKeys对应属性类型的值

schema.edgeLabel("knows").link("person", "person").properties("date").ifNotExist().create();
schema.edgeLabel("created").multiTimes().link("person", "software").properties("date").sortKeys("date").ifNotExist().create();

indexType

  1. Secondary
    支持精确匹配的二级索引,允许建立联合索引,联合索引支持索引前缀搜索
    单个属性: 支持相等查询,比如:person顶点的city属性的二级索引,可以用g.V().has(“city”, “北京”)查询"city属性值是北京"的全部顶点
    联合索引: 支持前缀查询和相等查询,比如:person顶点的city和street属性的联合索引,可以用g.V().has (“city”, “北京”).has(‘street’, ‘中关村街道’)查询"city属性值是北京且street属性值是中关村"的全部顶点,或者g.V() .has(“city”, “北京”)查询"city属性值是北京"的全部顶点
    secondary index的查询都是基于"是"或者"相等"的查询条件,不支持"部分匹配"

  2. Range
    支持数值类型的范围查询
    必须是单个数字或者日期属性,比如:person顶点的age属性的范围索引,可以用g.V().has(“age”, P.gt(18))查询"age属性值大于18"的顶点。除了P.gt()以外,还支持P.gte(), P.lte(), P.lt(), P.eq(), P.between(), P.inside()和P.outside()等

  3. Search
    支持全文检索的索引
    必须是单个文本属性,比如:person顶点的address属性的全文索引,可以用g.V().has(“address”, Text .contains(‘大厦’)查询"address属性中包含大厦"的全部顶点
    search index的查询是基于"是"或者"包含"的查询条件

  4. Shard
    支持前缀匹配 + 数字范围查询的索引
    N个属性的分片索引,支持前缀相等情况下的范围查询,比如:person顶点的city和age属性的分片索引,可以用g.V().has (“city”, “北京”).has(“age”, P.between(18, 30))查询"city属性是北京且年龄大于等于18小于30"的全部顶点
    shard index N个属性全是文本属性时,等价于secondary index
    shard index只有单个数字或者日期属性时,等价于range index
    shard index可以有任意数字或者日期属性,但是查询时最多只能提供一个范围查找条件,且该范围查找条件的属性的前缀属性都是相等查询条件

  5. Unique
    支持属性值唯一性约束,即可以限定属性的值不重复,允许联合索引,但不支持查询
    单个或者多个属性的唯一性索引,不可用来查询,只可对属性的值进行限定,当出现重复值时将报错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值