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,一经查实,立即删除!

相关文章

谷歌c++风格摘抄

全部来源于网络&#xff0c;我感觉好的就复制粘贴了。【你必需防止头文件重复编译。】<PROJECT>_<PATH>_<FILE>_H_foo/src/bar/baz.h > #ifndef FOO_BAR_BAZ_H_【inline函数要尽量简单。】函数最好小于10行。函数内包含循环、switch语句&#xff0c;不能定…

HugeGraph 图数据库常见问题汇总

索引介绍&#xff1a;https://blog.csdn.net/it1993/article/details/89492296 分词问题&#xff1a;https://github.com/hugegraph/hugegraph/issues/779 Hugegraph是否支持外部索引&#xff1a;https://github.com/hugegraph/hugegraph/issues/542 Hugegraph二级索引进行模…

String练习代码保存

package com.test;public class M1001{public static void main(String[] args) {System.out.println("-----------字符串截取----------------");String str "a,b,c,d,e,,";String[] str1 null;str1str.split(",");for(String st : str1){Sys…

Hbase JMX 监控 - Region

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

String、StringBuilder和StringBuffer的区别和用法

分别使用使用这三种来拼接字符串&#xff0c;对比各自损耗的时间&#xff1a; 经过测试&#xff1a; package com.test;public class Main{public static void main(String[] args){testString();testStringBuffer();testStringBuilder();}private static void testStringBui…

Hbase Compaction 源码分析 - CompactionChecker

其他相关文章 Hbase Compaction 源码分析 - CompactionChecker Hbase Compaction 源码分析 - RatioBasedCompactionPolicy 策略 Hbase Compaction 源码分析 - CompactSplitThread 线程池选择 CompactionChecker 介绍&#xff1a; RegionServer会在后台启动一个线程Compac…

c++ 之类的前置声明

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

java中随机数Random和ThreadLocalRandom()用法与区别

package com.test;import java.util.Random; import java.util.concurrent.ThreadLocalRandom;public class M1001{public static void main(String[] args) {Random random new Random();System.out.println("-----------产生1到10之间的随机数----------------");…

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…

java如何生成验证码

package com.test;import java.util.Random; import java.util.UUID; import java.util.concurrent.ThreadLocalRandom;public class M1001{public static void main(String[] args) {System.out.println("-----------产生5个随机数的验证码----------------");Strin…

m3u8下载ts 合并成一个视频

我们在用网页看视频时&#xff0c;很多时候视频是下载不下来的&#xff0c;当然这里面有很多技术来防止我们下载视频&#xff0c;接下来我将破解使用m3u8格式来下载视频。一般情况下&#xff0c;我们使用浏览器中Network来查看服务器和本机的数据传输&#xff0c;而视频的原地址…

用行为树的方式思考问题

这段时间做了很多和AI无关的事情&#xff0c;做了个Flash的3D引擎&#xff0c;用汇编写了些shader&#xff0c;做了很多引擎的工具&#xff0c;脚本&#xff0c;插件&#xff0c;游戏也发布了首个预告片&#xff0c;一年多的工作收获满满&#xff0c;职位从AI Engineer变成了En…

Linux常用指令2

linux的命令操作 1、日常操作命令 **查看当前所在的工作目录 pwd **查看当前系统的时间 date **查看有谁在线&#xff08;哪些人登陆到了服务器&#xff09; who 查看当前在线 last 查看最近的登陆历史记录 2、文件系统操作 ** ls / 查看根目录下的子节点&#xff…

qt, connect参数,Qt::DirectConnection,Qt::QueuedConnection

connect用于连接qt的信号和槽&#xff0c;在qt编程过程中不可或缺。它其实有第五个参数&#xff0c;只是一般使用默认值&#xff0c;在满足某些特殊需求的时候可能需要手动设置。 Qt::AutoConnection&#xff1a; 默认值&#xff0c;使用这个值则连接类型会在信号发送时决定。如…

Hbase Compaction 队列数量较大分析

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

java中Date和DateFormat、SimpleDateFormat类

package com.test;import java.text.DateFormat; import java.util.Date; import java.util.Random; import java.util.UUID; import java.util.concurrent.ThreadLocalRandom;public class M1001{public static void main(String[] args) {//Date表示特定的瞬间,精确到毫秒Dat…

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

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

sigslot库源码分析

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

Mysql for linux 安装

Mysql for linux 安装&#xff1a; 第一步&#xff0c;参考这个链接至第四步为止 https://jingyan.baidu.com/article/cd4c2979209c32756e6e60e1.html 第二步&#xff1a;使用rpm -qa | grep mysql 查询安装状态 第三步&#xff1a;使用/etc/rc.d/init.d/mysqld status 检…