HugeGraph 图数据库索引介绍 - 范围索引,全文索引

目录

HugeGraph 索引介绍

二级索引

组合索引

范围索引

全文索引

 


HugeGraph 索引介绍

二级索引

创建schema和添加数据

        schema.propertyKey("name").asText().ifNotExist().create();schema.propertyKey("uid").asLong().ifNotExist().create();schema.propertyKey("city").asText().ifNotExist().create();schema.propertyKey("mid").asText().ifNotExist().create();schema.propertyKey("url").asText().ifNotExist().create();schema.propertyKey("date").asText().ifNotExist().create();schema.vertexLabel("article").properties("name", "uid", "city","mid","url").useCustomizeStringId().ifNotExist().create();	schema.indexLabel("articleByNameSecondary").onV("article").by("name").secondary().ifNotExist().create();graph.addVertex(T.label, "article",T.id,"id7", "mid", "lakjdflkjalskdjfl", "name", "北京三联WiFi熟练度附近", "uid", 1234567897,"city","未知","url","http://test.com//IodUhh2bV");graph.addVertex(T.label, "article",T.id,"id2", "mid", "lakjdflkjalskdjfl", "name", "北京三联法律文件而来反馈", "uid", 1234567891,"city","未知","url","http://test.com//IodUhh2bV");graph.addVertex(T.label, "article",T.id,"id3", "mid", "lakjdflkjalskdjfl", "name", "深圳广州WiFi熟练度附近", "uid", 1234567892,"city","未知","url","http://test.com//IodUhh2bV");graph.addVertex(T.label, "article",T.id,"id4", "mid", "lakjdflkjalskdjfl", "name", "深圳WiFi熟练度附近", "uid", 1234567893,"city","未知","url","http://test.com//IodUhh2bV");graph.addVertex(T.label, "article",T.id,"id5", "mid", "lakjdflkjalskdjfl", "name", "广州测试", "uid", 1234567894,"city","未知","url","http://test.com//IodUhh2bV");graph.addVertex(T.label, "article",T.id,"id6", "mid", "lakjdflkjalskdjfl", "name", "数据", "uid", 1234567895,"city","未知","url","http://test.com//IodUhh2bV");

根据name查询,该方法只能全不值匹配,不能模糊匹配

模糊匹配使用该方法,不推荐这么使用,filter过滤数据,当数据量很大的时候性能会下降

g.V().hasLabel("article").filter{it.get().property("name").value().contains("北京")};
或者使用下面这个方法进行正则匹配
g.V().hasLabel("article").filter{it.get().property("name").value().matches("北京(.*)")};

 可以对结果进行过滤

组合索引

待补充

范围索引

待补充

全文索引

创建索引标签

设置定点article的name字段为全文索引(可以模糊检索)

		schema.indexLabel("articleByNameSearch").onV("article").by("name").search().ifNotExist().create();

其他schema设置

        schema.propertyKey("name").asText().ifNotExist().create();schema.propertyKey("uid").asLong().ifNotExist().create();schema.propertyKey("city").asText().ifNotExist().create();schema.propertyKey("mid").asText().ifNotExist().create();schema.propertyKey("url").asText().ifNotExist().create();schema.propertyKey("date").asText().ifNotExist().create();schema.vertexLabel("article").properties("name", "uid", "city","mid","url")//		.primaryKeys("name").useCustomizeStringId().ifNotExist().create();

 添加数据

graph.addVertex(T.label, "article",T.id,"id7", "mid", "lakjdflkjalskdjfl", "name", "北京三联WiFi熟练度附近", "uid", 1234567897,"city","未知","url","http://test.com//IodUhh2bV");
graph.addVertex(T.label, "article",T.id,"id2", "mid", "lakjdflkjalskdjfl", "name", "北京三联法律文件而来反馈", "uid", 1234567891,"city","未知","url","http://test.com//IodUhh2bV");
graph.addVertex(T.label, "article",T.id,"id3", "mid", "lakjdflkjalskdjfl", "name", "深圳广州WiFi熟练度附近", "uid", 1234567892,"city","未知","url","http://test.com//IodUhh2bV");
graph.addVertex(T.label, "article",T.id,"id4", "mid", "lakjdflkjalskdjfl", "name", "深圳WiFi熟练度附近", "uid", 1234567893,"city","未知","url","http://test.com//IodUhh2bV");
graph.addVertex(T.label, "article",T.id,"id5", "mid", "lakjdflkjalskdjfl", "name", "广州测试", "uid", 1234567894,"city","未知","url","http://test.com//IodUhh2bV");
graph.addVertex(T.label, "article",T.id,"id6", "mid", "lakjdflkjalskdjfl", "name", "数据", "uid", 1234567895,"city","未知","url","http://test.com//IodUhh2bV");

 数据添加成功,查看数据

idlabelproperties
id2article{"name":"北京三联法律文件而来反馈","uid":1234567891,"city":"未知","mid":"lakjdflkjalskdjfl","url":"http://test.com//IodUhh2bV"}
id3article{"name":"深圳广州WiFi熟练度附近","uid":1234567892,"city":"未知","mid":"lakjdflkjalskdjfl","url":"http://test.com//IodUhh2bV"}
id4article{"name":"深圳WiFi熟练度附近","uid":1234567893,"city":"未知","mid":"lakjdflkjalskdjfl","url":"http://test.com//IodUhh2bV"}
id5article{"name":"广州测试","uid":1234567894,"city":"未知","mid":"lakjdflkjalskdjfl","url":"http://test.com//IodUhh2bV"}
id6article{"name":"数据","uid":1234567895,"city":"未知","mid":"lakjdflkjalskdjfl","url":"http://test.com//IodUhh2bV"}
id7article{"name":"北京三联WiFi熟练度附近","uid":1234567897,"city":"未知","mid":"lakjdflkjalskdjfl","url":"http://test.com//IodUhh2bV"}

查询 

添加索引的数据会进行分词,我们在HugeGraph中可以看到配置文件 hugegraph.properties 中有配置分词项,这里使用jieba分词

search.text_analyzer=jieba
search.text_analyzer_mode=INDEX

执行查询

g.V().hasLabel("article").has("name", Text.contains("熟练度"))

查询结果: 

idlabelproperties
id3article{"name":"深圳广州WiFi熟练度附近","uid":1234567892,"city":"未知","mid":"lakjdflkjalskdjfl","url":"http://test.com//IodUhh2bV"}
id4article{"name":"深圳WiFi熟练度附近","uid":1234567893,"city":"未知","mid":"lakjdflkjalskdjfl","url":"http://test.com//IodUhh2bV"}
id7article{"name":"北京三联WiFi熟练度附近","uid":1234567897,"city":"未知","mid":"lakjdflkjalskdjfl","url":"http://test.com//IodUhh2bV"}

我们可以看出可以模糊查询了

 我们再查询“熟练”,发现数据也可以出来

当查询“熟”一个字的时候发现没有数据,搜索“练度”也没有数据,原因是索引将数据进行分词,将分词后的每个词进行索引,如果你搜索的词在分词的时候没有分词出来,最终搜索的结果就会搜索不到,“熟”,“练度”这两个字(词),在JieBa分词中没有,所以搜索不到。

所以查询使用使用Text.contains(),也并非我们开发中判断字符串中是否包含该字符串的意思。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/509789.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hbase JMX 监控 - Region

获取Region监控信息页面: http://regionServerName:16030/jmx?qryHadoop:serviceHBase,nameRegionServer,subRegions 获得数据如下 参数代表含义 *** 为前缀代表:Namespace_${namespace}_table_${tableName}_region_${regionName} ***_metric_storeCo…

c++ 之类的前置声明

转自:http://blog.csdn.net/fjb2080/archive/2010/04/27/5533514.aspx 作者:清林,博客名:飞空静渡 刚开始学习c的人都会遇到这样的问题: 定义一个类 class A,这个类里面使用了类B的对象b,然后定…

Hbase Compaction 源码分析 - RatioBasedCompactionPolicy 策略

目录 类的关系图 ​ RatioBasedCompactionPolicy selectCompaction 方法 getCurrentEligibleFiles方法 skipLargeFiles方法 createCompactionRequest方法 filterBulk方法 applyCompactionPolicy方法 removeExcessFiles方法 setIsMajor方法 其他相关文章 Hbase Compa…

Hbase Compaction 源码分析 - CompactSplitThread 线程池选择

目录 CompactSplitThread requestCompactionInternal方法 selectCompaction方法 requestCompaction方法 其他相关文章 Hbase Compaction 源码分析 - CompactionChecker Hbase Compaction 源码分析 - RatioBasedCompactionPolicy 策略 Hbase Compaction 源码分析 - CompactS…

Hbase Compaction 队列数量较大分析

目录 问题 问题原因分析 总结建议 问题 前几天朋友公司Hbase集群出现Compaction队列持续处于比较大的情况,并且mem flush队列也比较大,一起看了下问题,大概情况如下图 从图中可以看出来压缩队列总和持续在1000-2000,平对压缩队列…

Hbase 2.x Region in transition (永久RIT) 异常解决

环境 Hbase 版本:2.0 问题原因 hbase长时间出现RIT,并且发生RIT的Region是已经删除了的Hbase表,表未删除的情况下执行assgin可以消除该问题 Hbase Region in transition (RIT) 异常解决:https://datamining.blog.csdn.net/artic…

sigslot库源码分析

言归正传,sigslot是一个用标准C语法实现的信号与槽机制的函数库,类型和线程安全。提到信号与槽机制,恐怕最容易想到的就是大名鼎鼎的Qt所支持的对象之间通信的模式吧。不过这里的信号与槽虽然在概念上等价与Qt所实现的信号与槽,但…

Hue开发指南 - 提交 Spark 程序

目录 Hue开发指南 1.Spark文件打包成一个Jar包提交Hue运行 1.1 上传Spark Jar包至HDFS文件系统 1.2.Hue中创建Spark任务 2.多jar包导入执行(依赖jar包与主程序jar包分开打包) 2.1 修改worksapce 2.2 添加程序依赖jar包 Hue开发指南 Hue是面向 Had…

如何缩小码农和高手的差距

为什么同样的时间有的人可以漂亮的完成工作,而有些人废了很大的力气也没有完成?前者我们常常称之为“大牛”,后者我们常常叫他们“菜鸟”。当然“大牛”都是相对而言的,“大牛”也不可能方方面面都非常厉害,换句话说大…

OpenResty 安装,收集日志保存到文本文件

目录 安装 1.安装相关类库 2.安装编译openresty 3.编写配置启动openresty服务 4.通过 openresty 保存日志数据到系统 安装 1.安装相关类库 yum install -y readline-devel pcre-devel openssl-devel gcc 2.安装编译openresty wget https://openresty.org/download/open…

Hadoop Yarn REST API未授权漏洞利用挖矿分析

目录 一、背景情况 二、 漏洞说明 攻击步骤: 三、入侵分析 四、安全建议 清理病毒 安全加固 五、IOCs 一、背景情况 5月5日腾讯云安全曾针对攻击者利用Hadoop Yarn资源管理系统REST API未授权漏洞对服务器进行攻击,攻击者可以在未授权的情况…

Linux shell编程学习总结

主要内容&#xff1a; shell编程sed命令awk命令crontab定时器 什么是Shell&#xff1f; Shell是用户与内核进行交互操作的一种接口&#xff0c;目前最流行的Shell称为bash Shell Shell也是一门编程语言<解释型的编程语言>&#xff0c;即shell脚本 一个系统可以存在多…

Flink ProcessFunction 介绍使用

目录 实现功能 代码 测试 问题 官网描述&#xff1a;https://ci.apache.org/projects/flink/flink-docs-release-1.10/zh/dev/stream/operators/process_function.html The ProcessFunction is a low-level stream processing operation, giving access to the basic build…

Flink keyby 数据倾斜问题处理

上一篇我们使用keyby后发现数据严重倾斜 https://datamining.blog.csdn.net/article/details/105316728 大概看下问题所在&#xff0c;大量数据在一个subtask中运行 这里我们使用两阶段keyby 解决该问题 之前的问题如下图所示 我们期望的是 但我们的需要根据key进行聚合统计&a…

linux中iptables对防火墙的操作

Iptables教程 1. iptables防火墙简介 Iptables也叫netfilter是Linux下自带的一款免费且优秀的基于包过滤的防火墙工具&#xff0c;它的功能十分强大&#xff0c;使用非常灵活&#xff0c;可以对流入、流出、流经服务器的数据包进行精细的控制。iptables是Linux2.4及2.6内核中…

Web Components入门不完全指北

目前流行的各类前端框架&#xff0c;不管是react, angular还是vue&#xff0c;都有一个共同点&#xff0c;那就是支持组件化开发&#xff0c;但事实上随着浏览器的发展&#xff0c;现在浏览器也原生支持组件式开发&#xff0c;本文将通过介绍Web Components 的三个主要概念&…

Flink 1.9 CDH 6.3 集成

目录 1.下载准备文件 2.felink csa jar包准备 3.将 Flink Parcel放入httpd目录下 4.配置CDH Flink Parcel 5.安装Flink 1.下载准备文件 https://archive.cloudera.com/csa/1.0.0.0/csd/FLINK-1.9.0-csa1.0.0.0-cdh6.3.0.jarhttps://archive.cloudera.com/csa/1.0.0.0/parc…

ssh免密登陆机制示意图

ssh免密登陆机制示意图

CDH 6.x 安装 Phoenix 服务

最近有个新项目启动&#xff0c;版本升级到6.3&#xff0c;发现CDH6.2 版本已经支持Phoenix parcel安装 一、准备文件 下载 https://archive.cloudera.com/phoenix/6.2.0/csd/PHOENIX-1.0.jar 下载parcel #目录 https://archive.cloudera.com/phoenix/6.2.0/parcels/ #根据…