CN112800287B - 基于图数据库的全文索引方法和系统 - Google Patents
基于图数据库的全文索引方法和系统 Download PDFInfo
- Publication number
- CN112800287B CN112800287B CN202110403274.5A CN202110403274A CN112800287B CN 112800287 B CN112800287 B CN 112800287B CN 202110403274 A CN202110403274 A CN 202110403274A CN 112800287 B CN112800287 B CN 112800287B
- Authority
- CN
- China
- Prior art keywords
- index
- full
- graph
- edge
- point
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/9035—Filtering based on additional data, e.g. user or group profiles
Abstract
本申请涉及一种基于图数据库的全文索引方法和系统,通过在全文索引引擎中创建索引模板,将图数据库中字段类型为字符串的数据同步到全文索引引擎中,全文索引引擎根据索引模板为每一条字符串数据创建索引,得到全文索引;图数据库获取查询请求信息,将查询请求信息发送至全文索引引擎,全文索引引擎根据全文索引获取查询语句的第一结果集,图数据库对第一结果集进行基于键值对的数据扫描,得到第二结果集,其中,查询请求信息包括查询语句,全文索引引擎支持字符串类型的条件过滤,先在全文索引引擎快速查找到字符串数据,图数据库再对字符串数据进行基于键值对的数据扫描,得到字符串数据对应的多个属性值,提高数据检索的效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及基于图数据库的全文索引方法和系统。
背景技术
随着零售、金融、电商、互联网、物联网等行业的兴起,基础数据量成几何状增长,为了将日益增长的庞大数据量组织成一个关系网,传统的关系数据库已经很难应对了;由此业界上出现了一批专门针对关系网数据存储、计算的数据库--图数据库;在海量关系数据中的检索效率是每个图数据库必须要面对的问题,图数据库索引的实现有效提高了数据检索效率。
在相关技术中,比较有代表性的图数据库是Nebula Graph、Neo4j和JanusGraph等,其中,Nebula Graph为一个高性能图数据库,可以处理千亿节点万亿条边的海量图数据,同时解决了海量数据存储和分布式并行计算的问题,但是,Nebula Graph原生的基于键值对的索引已经无法满足高性能的需求,索引查询效率不高,且查询产生的不必要的网络开销较高。
目前针对相关技术中对Nebula Graph的索引查询效率不高,查询产生的不必要的网络开销较高的问题,尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种基于图数据库的全文索引方法和系统,以至少解决相关技术中Nebula Graph的索引查询效率不高,查询产生的不必要的网络开销较高的问题。
第一方面,本申请实施例提供了一种基于图数据库的全文索引方法,所述方法包括:
在全文索引引擎中创建索引模板,将图数据库中字段类型为字符串的数据同步到所述全文索引引擎中,所述全文索引引擎根据所述索引模板为每一条字符串数据创建索引,得到全文索引;
所述图数据库获取查询请求信息,将所述查询请求信息发送至所述全文索引引擎,所述全文索引引擎根据所述全文索引获取查询语句的第一结果集,所述图数据库对所述第一结果集进行基于键值对的数据扫描,得到第二结果集,其中,所述查询请求信息包括所述查询语句。
在其中一些实施例中,所述图数据库获取查询请求信息,将所述查询请求信息发送至所述全文索引引擎之前,所述方法还包括:
所述图数据库判断所述查询请求信息是否包含条件过滤;
若判断结果为是,则所述图数据库将所述查询请求信息发送至所述全文索引引擎;
若判断结果为否,则所述图数据库根据所述查询请求信息进行索引扫描,得到第三结果集。
在其中一些实施例中,所述图数据库根据所述查询请求信息进行索引扫描,得到第三结果集包括:
所述图数据库获取所述查询请求信息中的点索引或边索引,根据所述点索引或所述边索引扫描目标图分区,得到第三结果集,其中,所述查询语句中包括所述点索引或所述边索引。
在其中一些实施例中,所述图数据库根据所述查询请求信息进行索引扫描之前,所述方法还包括:
所述图数据库获取点或边的写入请求后,根据所述点的点ID或所述边的边ID进行哈希运算,根据哈希运算结果,将所述点或所述边存入所述目标图分区,其中,所述点包括所述点ID和所述点的属性值,所述边包括所述边ID和所述边的属性值;
根据所述点的属性值创建点索引,根据所述边的属性值创建边索引,将所述点索引存入对应的点所在的目标图分区中,将所述边索引存入对应的边所在的目标图分区中。
在其中一些实施例中,所述图数据库对所述第一结果集进行基于键值对的数据扫描,得到第二结果集之后,所述方法还包括:
所述图数据库判断所述查询请求信息是否包括表达式过滤语句,若判断结果为是,则所述图数据库根据所述表达式过滤语句对所述第二结果集进行表达式过滤,得到目标结果;
若判断结果为否,则所述第二结果集作为最终的目标结果。
第二方面,本申请实施例提供了一种基于图数据库的全文索引系统,所述系统包括客户端、图数据库和全文索引引擎,所述图数据库包括图服务器、元数据服务器和存储服务器;
所述元数据服务器,用于存储所述全文索引引擎的连接信息和元数据信息;
所述客户端,用于向所述图服务器发送查询请求信息,其中,所述查询请求信息包括查询语句;
所述图服务器,用于获取所述客户端发送的所述查询请求信息,并将所述查询请求信息发送至所述全文索引引擎;
所述全文索引引擎,用于根据全文索引获取所述查询语句的第一结果集,并将所述第一结果集返回至所述图服务器,其中,预先在所述全文索引引擎中创建索引模板,将图数据库中字段类型为字符串的数据同步到所述全文索引引擎中,所述全文索引引擎根据所述索引模板为每一条字符串数据创建索引,得到所述全文索引;
所述存储服务器,用于获取所述图服务器的所述第一结果集,并对所述第一结果集进行基于键值对的数据扫描,得到第二结果集,并通过所述图服务器将所述第二结果集返回至所述客户端。
在其中一些实施例中,所述图服务器将所述查询请求信息发送至所述全文索引引擎之前,
所述图服务器判断所述查询请求信息是否包含条件过滤;
若判断结果为是,则所述图服务器将所述查询请求信息发送至所述全文索引引擎;
若判断结果为否,则所述图服务器将所述查询请求信息发送至所述存储服务器,所述存储服务器根据所述查询请求信息进行索引扫描,得到第三结果集,并通过所述图服务器将所述第三结果集返回至所述客户端。
在其中一些实施例中,所述存储服务器根据所述查询请求信息进行索引扫描,得到第三结果集包括:
所述存储服务器获取所述查询请求信息中的点索引或边索引,根据所述点索引或所述边索引扫描目标图分区,得到第三结果集,其中,所述查询语句中包括所述点索引或所述边索引。
在其中一些实施例中,所述存储服务器根据所述查询请求信息进行索引扫描之前,
所述图服务器获取点或边的写入请求后,根据所述点的点ID或所述边的边ID进行哈希运算,根据哈希运算结果,将所述点或所述边存入目标图分区中,其中,所述点包括所述点ID和所述点的属性值,所述边包括所述边ID和所述边的属性值;
根据所述点的属性值创建点索引,根据所述边的属性值创建边索引,将所述点索引存入对应的点所在的目标图分区中,将所述边索引存入对应的边所在的目标图分区中。
在其中一些实施例中,所述存储服务器对所述第一结果集进行基于键值对的数据扫描,得到第二结果集之后,
所述图服务器判断所述查询请求信息是否包括表达式过滤语句,若判断结果为是,则所述存储服务器根据所述表达式过滤语句,对所述第二结果集进行表达式过滤得到目标结果,并通过所述图服务器将所述目标结果返回至所述客户端;
若判断结果为否,则所述第二结果集作为最终的目标结果,通过所述图服务器将所述目标结果返回至所述客户端。
相比于相关技术,本申请实施例提供的基于图数据库的全文索引方法,通过在全文索引引擎中创建索引模板,将图数据库中字段类型为字符串的数据同步到全文索引引擎中,全文索引引擎根据索引模板为每一条字符串数据创建索引,得到全文索引;图数据库获取查询请求信息,将查询请求信息发送至全文索引引擎,全文索引引擎根据全文索引获取查询语句的第一结果集,图数据库对第一结果集进行基于键值对的数据扫描,得到第二结果集,其中,查询请求信息包括查询语句,全文索引引擎支持字符串类型的条件过滤,故预先在全文索引引擎中创建索引模板,将图数据库中字段类型为字符串的数据同步到全文索引引擎时,会自动根据索引模板创建全文索引,先在全文索引引擎快速查找到字符串数据,图数据库再对字符串数据进行基于键值对的数据扫描,得到字符串数据对应的多个属性值,提高数据检索的效率,且减少了随机查询带来的大量网络开销。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的基于图数据库的全文索引系统的结构框图;
图2是根据本申请实施例的基于图数据库的全文索引系统的分布式架构示意图;
图3是根据本申请实施例的基于图数据库的全文索引方法的流程图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指大于或者等于两个。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
本实施例提供了一种基于图数据库的全文索引系统,该系统用于实现本申请的实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图1是根据本申请实施例的基于图数据库的全文索引系统的结构框图,如图1所示,该系统包括客户端11、图数据库12和全文索引引擎13,图数据库12包括图服务器121、元数据服务器120和存储服务器122;元数据服务器120存储全文索引引擎13(Elasticsearch,简称ES)的连接信息和元数据信息;当ES安装成功后,需注册全文索引引擎集群的连接信息,并将连接信息保存在元数据服务器120中,因为 ES 的节点是点对点的,任何一个节点都提供服务,所以在元数据服务器120对全文索引引擎13进行连接时,需定时监控客户端11是否正常,并进行负载均衡;元数据服务器120还提供全文索引引擎集群信息的修改功能,如果用户的全文索引引擎集群异常,用户可以选择切换到其它集群中;
客户端11向图服务器121发送查询请求信息,其中,查询请求信息包括查询语句,图服务器121获取到客户端11发送的查询请求信息后,将查询请求信息发送至全文索引引擎13;本实施例中,查询请求信息包括全文索引的表达式,图服务器121根据语法解析将全文索引表达式转换为全文索引的算子,再将全文索引的算子发送至全文索引引擎13,例如,全文索引的表达式为“LOOKUP ON player WHERE PREFIX(player.name, "B") YIELDplayer.age”,通过语法解析得到关键字player,name,“B”后,根据关键字生成一个全文索引的算子,即查询结构,该查询结构中包含了这次查询所需要的全部信息元素,图服务器121将该查询结构翻译成ES兼容的查询语句;
全文索引引擎13根据全文索引获取查询语句的第一结果集,并将第一结果集返回至图服务器121,其中,预先在全文索引引擎13中创建索引模板,将图数据库12中字段类型为字符串的数据同步到全文索引引擎13中,全文索引引擎13根据索引模板为每一条字符串数据创建索引,得到全文索引;其中,全文索引引擎13支持字符串类型的条件过滤,例如模糊匹配、前缀匹配、通配符匹配和正则表达式匹配等,通过对字符串类型的条件过滤,可以提高检索效率,故将图数据库12中字段类型为字符串的数据同步到全文索引引擎13中,并根据索引模板为同步到全文索引引擎13中的字符串数据创建全文索引,根据全文索引可以快速检索出符合查询语句的字符串数据,提高数据检索效率;
存储服务器122,用于获取图服务器121的第一结果集,并对第一结果集进行基于键值对的数据扫描,得到第二结果集,并通过图服务器121将第二结果集返回至客户端11。示例性的,通过前缀匹配查询姓名以字母 B 开头的球员,则全文索引的表达式为“LOOKUPON player WHERE PREFIX(player.name, "B") YIELD player.age”,在全文索引引擎13中检索到的第一结果集为"Boris Diaw"、"Ben Simmons"和"Blake Griffin",则存储服务器122对该第一结果集进行基于键值对的数据扫描,查询第一结果集中三个节点对应的属性值,得到第二结果集,例如,Boris Diaw对应的属性值有国籍、性别和年龄等,通过图服务器121将第二结果集返回至客户端11。
通过预先在全文索引引擎13中创建索引模板,将图数据库12中字段类型为字符串的数据同步到全文索引引擎13中,全文索引引擎13根据索引模板为每一条字符串数据创建索引,得到全文索引,利用全文索引引擎13支持字符串类型的条件过滤,快速检索到符合查询语句的字符串数据,再对检索到字符串数据进行基于键值对的数据扫描,获取更精确的结果,解决了相关技术中,图数据库12(Nebula Graph)基于原生的键值对索引查询效率不高,查询产生的不必要的网络开销较高的问题,提高了检索的效率。
在其中一些实施例中,图2是根据本申请实施例的基于图数据库的全文索引系统的分布式架构示意图,如图2所示,全文索引引擎集群(Fulltext search cluster)独立于图数据库12(Neula Graph)的架构,并通过全文索引适配器插件(full-text adapterplugin)与元数据服务器120(Metad services)、图服务器121(graphd services)和存储服务器122(storage services)通信,图服务器121、元数据服务器120和存储服务器122都可以进行分布式部署;用户可以完全独立配置全文索引搜索引擎,例如,具体几个节点、配置在哪些节点上完全由用户决定,用户只需为全文客户端插件 (full-text client plugin)提供相应的连接信息即可。
元数据服务器120采用 leader/follower 架构,Leader 由元数据服务器集群中所有的元数据服务器节点选出,然后对外提供服务,Followers 处于待命状态并从 leader复制更新的数据,一旦 leader 节点停止服务,会再选举其中一个 follower 成为新的leader;图服务器121包括计算层,每个计算节点都运行着一个无状态的查询计算引擎,而每个计算节点彼此间无任何通信关系,计算节点仅从元数据服务器120读取元数据信息,以及和存储服务器122进行交互,存储服务器122采用 shared-nothing 的分布式架构设计,每个存储服务器节点都有多个本地键值对存储实例作为物理存储,Nebula Graph 采用多数派协议 Raft 来保证这些键值对存储之间的一致性;图数据(点和边)通过哈希的方式存储在不同图分区中,图分区表示一个虚拟的数据集,这些图分区分布在所有的存储节点上,分布信息存储在元数据服务器120中,因此所有的存储节点和计算节点都能获取到这个分布信息。
在其中一些实施例中,图服务器121将查询请求信息发送至全文索引引擎13之前,图服务器121判断查询请求信息是否包含条件过滤;若判断结果为是,则图服务器121将查询请求信息发送至全文索引引擎13;若判断结果为否,则图服务器121将查询请求信息发送至存储服务器122,存储服务器122根据查询请求信息进行索引扫描,得到第三结果集,并通过图服务器121将第三结果集返回至客户端11。本实施例中,字符串类型的条件过滤有模糊匹配(FUZZY)、前缀匹配(PREFIX)和通配符匹配(WILDCARD)等,查询请求信息中包含FUZZY、PREFIX或WILDCARD等,则判断为查询请求信息包含条件过滤,则将查询请求信息发送至全文索引引擎13,查询请求信息不包含条件过滤,则说明该查询请求信息不需要进行全文索引,则将查询请求信息发送至存储服务器122,在存储服务器122中进行索引扫描,根据索引扫描得到的第三结果集通过图服务器121返回至客户端11。
在其中一些实施例中,存储服务器122根据查询请求信息进行索引扫描,得到第三结果集包括:
存储服务器122获取查询请求信息中的点索引或边索引,根据点索引或边索引扫描目标图分区,得到第三结果集,其中,查询语句中包括点索引或边索引。本实施例中,根据点索引或边索引,可以获取到点索引或边索引所在的图分区,该图分区即索引扫描的查询范围,存储服务器122有多个图分区,若要同时查询多个点索引或多个边索引,则同时获取到多个点索引或多个边索引所在的图分区,并同时对多个图分区进行并发查询,将查询到的多个结果统一返回至图服务器121,图服务器121汇总结果集后返回给客户端11,锁定索引扫描的查询范围,并进行并发查询,可以减少随机查询带来的大量网络开销,且提高了检索效率。
在其中一些实施例中,存储服务器122根据查询请求信息进行索引扫描之前,图服务器121获取点或边的写入请求后,根据点的点ID或边的边ID进行哈希运算,根据哈希运算结果,将点或边存入目标图分区中,其中,点包括点ID和点的属性值,边包括边ID和边的属性值;根据点的属性值创建点索引,根据边的属性值创建边索引,将点索引存入对应的点所在的目标图分区中,将边索引存入对应的边所在的目标图分区中。本实施例中,点索引或边索引包括图分区ID,索引ID和属性,图分区ID指示点或边所在的图分区,索引ID用以区分不同的点或边的索引项,属性为存储的点或边属性值,通过为点或边创建索引,可以缩小索引扫描的查询范围,提高查询效率。
在其中一些实施例中,存储服务器122对第一结果集进行基于键值对的数据扫描,得到第二结果集之后,图服务器121判断查询请求信息是否包括表达式过滤语句,若判断结果为是,则存储服务器122根据表达式过滤语句,对第二结果集进行表达式过滤得到目标结果,并通过图服务器121将目标结果返回至客户端11;若判断结果为否,则第二结果集作为最终的目标结果,通过图服务器121将目标结果返回至客户端11;示例性的,若查询语句为lookup on player where player.name ==“B”AND player.age > 1,则存储服务器122会先扫描出符合条件player.name ==“B”的所有结果集,然后再通过表达式过滤语句player.age > 1将所有结果集进行再次的过滤,得到目标结果。
本实施例提供了一种基于图数据库的全文索引方法,图3是根据本申请实施例的基于图数据库的全文索引方法的流程图,如图3所示,该方法包括如下步骤:
步骤S301,在全文索引引擎13中创建索引模板,将图数据库12中字段类型为字符串的数据同步到全文索引引擎13中,全文索引引擎13根据索引模板为每一条字符串数据创建索引,得到全文索引;
步骤S302,图数据库12获取查询请求信息,将查询请求信息发送至全文索引引擎13,全文索引引擎13根据全文索引获取查询语句的第一结果集,图数据库12对第一结果集进行基于键值对的数据扫描,得到第二结果集,其中,查询请求信息包括查询语句。
相关技术中,图计算往往需要进行大量的字符串类型的条件过滤,例如字符串的模糊匹配、前缀匹配、通配符匹配和正则表达式匹配等,此时图数据库12原生的基于键值对的索引已经无法满足高性能的需求,通过上述步骤S301至步骤S302,预先在全文索引引擎13中创建索引模板,将图数据库12中字段类型为字符串的数据同步到全文索引引擎13时,会自动根据索引模板创建全文索引,而全文索引引擎13支持模糊匹配、前缀匹配、通配符匹配和正则表达式匹配等搜索方式,先在全文索引引擎13快速查找到字符串数据,图数据库12再对字符串数据进行基于键值对的数据扫描,得到字符串数据对应的多个属性值,提高数据检索的效率。
需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
另外,结合上述实施例中的基于图数据库的全文索引方法,本申请实施例可提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种基于图数据库的全文索引方法。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于图数据库的全文索引方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
本领域的技术人员应该明白,以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种基于图数据库的全文索引方法,其特征在于,所述方法包括:
在全文索引引擎中创建索引模板,将图数据库中字段类型为字符串的数据同步到所述全文索引引擎中,所述全文索引引擎根据所述索引模板为每一条字符串数据创建索引,得到全文索引;
所述图数据库获取查询请求信息,并判断所述查询请求信息是否包含条件过滤,若判断结果为是,则将所述查询请求信息发送至所述全文索引引擎,所述全文索引引擎根据所述全文索引获取查询语句的第一结果集,所述图数据库对所述第一结果集进行基于键值对的数据扫描,得到第二结果集,其中,所述查询请求信息包括所述查询语句。
2.根据权利要求1所述的方法,其特征在于,所述图数据库获取查询请求信息,并判断所述查询请求信息是否包含条件过滤,若判断结果为否,则所述方法还包括:
所述图数据库根据所述查询请求信息进行索引扫描,得到第三结果集。
3.根据权利要求2所述的方法,其特征在于,所述图数据库根据所述查询请求信息进行索引扫描,得到第三结果集包括:
所述图数据库获取所述查询请求信息中的点索引或边索引,根据所述点索引或所述边索引扫描目标图分区,得到第三结果集,其中,所述查询语句中包括所述点索引或所述边索引。
4.根据权利要求3所述的方法,其特征在于,所述图数据库根据所述查询请求信息进行索引扫描之前,所述方法还包括:
所述图数据库获取点或边的写入请求后,根据所述点的点ID或所述边的边ID进行哈希运算,根据哈希运算结果,将所述点或所述边存入所述目标图分区,其中,所述点包括所述点ID和所述点的属性值,所述边包括所述边ID和所述边的属性值;
根据所述点的属性值创建点索引,根据所述边的属性值创建边索引,将所述点索引存入对应的点所在的目标图分区中,将所述边索引存入对应的边所在的目标图分区中。
5.根据权利要求1所述的方法,其特征在于,所述图数据库对所述第一结果集进行基于键值对的数据扫描,得到第二结果集之后,所述方法还包括:
所述图数据库判断所述查询请求信息是否包括表达式过滤语句,若判断结果为是,则所述图数据库根据所述表达式过滤语句对所述第二结果集进行表达式过滤,得到目标结果;
若判断结果为否,则所述第二结果集作为最终的目标结果。
6.一种基于图数据库的全文索引系统,其特征在于,所述系统包括客户端、图数据库和全文索引引擎,所述图数据库包括图服务器、元数据服务器和存储服务器;
所述元数据服务器,用于存储所述全文索引引擎的连接信息和元数据信息;
所述客户端,用于向所述图服务器发送查询请求信息,其中,所述查询请求信息包括查询语句;
所述图服务器,用于获取所述客户端发送的所述查询请求信息,并判断所述查询请求信息是否包含条件过滤,若判断结果为是,则将所述查询请求信息发送至所述全文索引引擎;
所述全文索引引擎,用于根据全文索引获取所述查询语句的第一结果集,并将所述第一结果集返回至所述图服务器,其中,预先在所述全文索引引擎中创建索引模板,将图数据库中字段类型为字符串的数据同步到所述全文索引引擎中,所述全文索引引擎根据所述索引模板为每一条字符串数据创建索引,得到所述全文索引;
所述存储服务器,用于获取所述图服务器的所述第一结果集,并对所述第一结果集进行基于键值对的数据扫描,得到第二结果集,并通过所述图服务器将所述第二结果集返回至所述客户端。
7.根据权利要求6所述的系统,其特征在于,所述图数据库获取查询请求信息,并判断所述查询请求信息是否包含条件过滤,若判断结果为否,则所述图服务器将所述查询请求信息发送至所述存储服务器,所述存储服务器根据所述查询请求信息进行索引扫描,得到第三结果集,并通过所述图服务器将所述第三结果集返回至所述客户端。
8.根据权利要求7所述的系统,其特征在于,所述存储服务器根据所述查询请求信息进行索引扫描,得到第三结果集包括:
所述存储服务器获取所述查询请求信息中的点索引或边索引,根据所述点索引或所述边索引扫描目标图分区,得到第三结果集,其中,所述查询语句中包括所述点索引或所述边索引。
9.根据权利要求8所述的系统,其特征在于,所述存储服务器根据所述查询请求信息进行索引扫描之前,
所述图服务器获取点或边的写入请求后,根据所述点的点ID或所述边的边ID进行哈希运算,根据哈希运算结果,将所述点或所述边存入目标图分区中,其中,所述点包括所述点ID和所述点的属性值,所述边包括所述边ID和所述边的属性值;
根据所述点的属性值创建点索引,根据所述边的属性值创建边索引,将所述点索引存入对应的点所在的目标图分区中,将所述边索引存入对应的边所在的目标图分区中。
10.根据权利要求6所述的系统,其特征在于,所述存储服务器对所述第一结果集进行基于键值对的数据扫描,得到第二结果集之后,
所述图服务器判断所述查询请求信息是否包括表达式过滤语句,若判断结果为是,则所述存储服务器根据所述表达式过滤语句,对所述第二结果集进行表达式过滤得到目标结果,并通过所述图服务器将所述目标结果返回至所述客户端;
若判断结果为否,则所述第二结果集作为最终的目标结果,通过所述图服务器将所述目标结果返回至所述客户端。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110403274.5A CN112800287B (zh) | 2021-04-15 | 2021-04-15 | 基于图数据库的全文索引方法和系统 |
US17/445,218 US20220335086A1 (en) | 2021-04-15 | 2021-08-17 | Full-text indexing method and system based on graph database |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110403274.5A CN112800287B (zh) | 2021-04-15 | 2021-04-15 | 基于图数据库的全文索引方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112800287A CN112800287A (zh) | 2021-05-14 |
CN112800287B true CN112800287B (zh) | 2021-07-09 |
Family
ID=75811428
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110403274.5A Active CN112800287B (zh) | 2021-04-15 | 2021-04-15 | 基于图数据库的全文索引方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20220335086A1 (zh) |
CN (1) | CN112800287B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11436344B1 (en) * | 2018-04-24 | 2022-09-06 | Pure Storage, Inc. | Secure encryption in deduplication cluster |
CN113407785B (zh) * | 2021-06-11 | 2023-02-28 | 西北工业大学 | 一种基于分布式储存系统的数据处理方法和系统 |
CN116881391B (zh) * | 2023-09-06 | 2024-01-02 | 安徽商信政通信息技术股份有限公司 | 一种全文检索方法及系统 |
CN117149709B (zh) * | 2023-10-30 | 2024-02-02 | 太平金融科技服务(上海)有限公司 | 影像文件的查询方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102193983A (zh) * | 2011-03-25 | 2011-09-21 | 北京世纪互联工程技术服务有限公司 | 图形数据库基于关系路径的节点数据过滤方法 |
CN108664617A (zh) * | 2018-05-14 | 2018-10-16 | 广州供电局有限公司 | 基于图像识别与检索的快速营销服务方法 |
CN111177303A (zh) * | 2019-12-18 | 2020-05-19 | 紫光云(南京)数字技术有限公司 | 基于phoenix的Hbase二级全文索引方法及系统 |
CN111966843A (zh) * | 2020-08-14 | 2020-11-20 | 北京同心尚科技发展有限公司 | 图数据库构建方法、路径搜索方法、装置和电子设备 |
Family Cites Families (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7685118B2 (en) * | 2004-08-12 | 2010-03-23 | Iwint International Holdings Inc. | Method using ontology and user query processing to solve inventor problems and user problems |
US7580918B2 (en) * | 2006-03-03 | 2009-08-25 | Adobe Systems Incorporated | System and method of efficiently representing and searching directed acyclic graph structures in databases |
US20090043797A1 (en) * | 2007-07-27 | 2009-02-12 | Sparkip, Inc. | System And Methods For Clustering Large Database of Documents |
US9158838B2 (en) * | 2008-12-15 | 2015-10-13 | Raytheon Company | Determining query return referents for concept types in conceptual graphs |
US8751521B2 (en) * | 2010-04-19 | 2014-06-10 | Facebook, Inc. | Personalized structured search queries for online social networks |
US8782080B2 (en) * | 2010-04-19 | 2014-07-15 | Facebook, Inc. | Detecting social graph elements for structured search queries |
US8185558B1 (en) * | 2010-04-19 | 2012-05-22 | Facebook, Inc. | Automatically generating nodes and edges in an integrated social graph |
US8655894B2 (en) * | 2010-04-26 | 2014-02-18 | Nokia Corporation | Method and apparatus for index generation and use |
US9177346B2 (en) * | 2010-07-01 | 2015-11-03 | Facebook, Inc. | Facilitating interaction among users of a social network |
WO2012135804A2 (en) * | 2011-04-01 | 2012-10-04 | Mixaroo, Inc. | System and method for real-time processing, storage, indexing, and delivery of segmented video |
US9576020B1 (en) * | 2012-10-18 | 2017-02-21 | Proofpoint, Inc. | Methods, systems, and computer program products for storing graph-oriented data on a column-oriented database |
US9208254B2 (en) * | 2012-12-10 | 2015-12-08 | Microsoft Technology Licensing, Llc | Query and index over documents |
US10346551B2 (en) * | 2013-01-24 | 2019-07-09 | New York University | Systems, methods and computer-accessible mediums for utilizing pattern matching in stringomes |
US20140372956A1 (en) * | 2013-03-04 | 2014-12-18 | Atigeo Llc | Method and system for searching and analyzing large numbers of electronic documents |
EP2973045A4 (en) * | 2013-03-15 | 2017-03-08 | Robert Haddock | Intelligent internet system with adaptive user interface providing one-step access to knowledge |
US20140337373A1 (en) * | 2013-05-07 | 2014-11-13 | Magnet Systems, Inc. | System for managing graph queries on relationships among entities using graph index |
CN103646079A (zh) * | 2013-12-13 | 2014-03-19 | 武汉大学 | 一种用于图数据库搜索的分布式索引及其并行生成方法 |
KR101480670B1 (ko) * | 2014-03-28 | 2015-01-15 | 경희대학교 산학협력단 | 대용량 그래프 데이터베이스에서 최단 경로를 탐색하는 방법 |
US10019536B2 (en) * | 2014-07-15 | 2018-07-10 | Oracle International Corporation | Snapshot-consistent, in-memory graph instances in a multi-user database |
US10146801B2 (en) * | 2014-09-02 | 2018-12-04 | The Johns Hopkins University | Apparatus and method for distributed graph processing |
US9703890B2 (en) * | 2014-10-17 | 2017-07-11 | Vmware, Inc. | Method and system that determine whether or not two graph-like representations of two systems describe equivalent systems |
US10169355B2 (en) * | 2014-10-27 | 2019-01-01 | Tata Consultancy Services Limited | Knowledge representation in a multi-layered database |
US10019538B2 (en) * | 2015-04-01 | 2018-07-10 | Tata Consultancy Services Limited | Knowledge representation on action graph database |
US9535963B1 (en) * | 2015-09-18 | 2017-01-03 | Linkedin Corporation | Graph-based queries |
US10810179B2 (en) * | 2015-09-25 | 2020-10-20 | Microsoft Technology Licensing, Llc | Distributed graph database |
US20210385251A1 (en) * | 2015-10-28 | 2021-12-09 | Qomplx, Inc. | System and methods for integrating datasets and automating transformation workflows using a distributed computational graph |
US11494665B2 (en) * | 2015-10-28 | 2022-11-08 | Qomplx, Inc. | Multi-tenant knowledge graph databases with dynamic specification and enforcement of ontological data models |
US20170212930A1 (en) * | 2016-01-21 | 2017-07-27 | Linkedin Corporation | Hybrid architecture for processing graph-based queries |
US10180992B2 (en) * | 2016-03-01 | 2019-01-15 | Microsoft Technology Licensing, Llc | Atomic updating of graph database index structures |
US20170255708A1 (en) * | 2016-03-01 | 2017-09-07 | Linkedin Corporation | Index structures for graph databases |
US11256746B2 (en) * | 2016-04-25 | 2022-02-22 | Oracle International Corporation | Hash-based efficient secondary indexing for graph data stored in non-relational data stores |
US10380188B2 (en) * | 2016-08-05 | 2019-08-13 | International Business Machines Corporation | Distributed graph databases that facilitate streaming data insertion and queries by reducing number of messages required to add a new edge by employing asynchronous communication |
US10552450B2 (en) * | 2016-08-05 | 2020-02-04 | International Business Machines Corporation | Distributed graph databases that facilitate streaming data insertion and low latency graph queries |
US10394891B2 (en) * | 2016-08-05 | 2019-08-27 | International Business Machines Corporation | Distributed graph databases that facilitate streaming data insertion and queries by efficient throughput edge addition |
KR101783298B1 (ko) * | 2017-04-05 | 2017-09-29 | (주)시큐레이어 | 그래프 데이터베이스 기반으로 입력 데이터로부터 노드 정보를 생성 및 관리하는 방법 및 이를 이용하는 서버 |
US20180357278A1 (en) * | 2017-06-09 | 2018-12-13 | Linkedin Corporation | Processing aggregate queries in a graph database |
US10445370B2 (en) * | 2017-06-09 | 2019-10-15 | Microsoft Technology Licensing, Llc | Compound indexes for graph databases |
CN108959538B (zh) * | 2018-06-29 | 2021-03-02 | 新华三大数据技术有限公司 | 全文检索系统及方法 |
CN110263225A (zh) * | 2019-05-07 | 2019-09-20 | 南京智慧图谱信息技术有限公司 | 一种千亿级知识图库的数据加载、管理、检索系统 |
CN111949649A (zh) * | 2019-05-14 | 2020-11-17 | 杭州海康威视数字技术股份有限公司 | 一种动态本体存储系统、存储方法、数据查询方法 |
CN110633378A (zh) * | 2019-08-19 | 2019-12-31 | 杭州欧若数网科技有限公司 | 一种支持超大规模关系网络的图数据库构建方法 |
US11475065B2 (en) * | 2019-10-29 | 2022-10-18 | Neo4J Sweden Ab | Pre-emptive graph search for guided natural language interactions with connected data systems |
CN111026874A (zh) * | 2019-11-22 | 2020-04-17 | 海信集团有限公司 | 知识图谱的数据处理方法及服务器 |
CN111190904B (zh) * | 2019-12-30 | 2023-12-08 | 四川蜀天梦图数据科技有限公司 | 一种图-关系数据库混合存储的方法和装置 |
CN111190888A (zh) * | 2020-01-03 | 2020-05-22 | 中国建设银行股份有限公司 | 一种管理图数据库集群的方法和装置 |
US11636847B2 (en) * | 2020-03-23 | 2023-04-25 | Sorcero, Inc. | Ontology-augmented interface |
CN111488406B (zh) * | 2020-04-16 | 2024-02-23 | 南京安链数据科技有限公司 | 一种图数据库管理方法 |
CN112363979B (zh) * | 2020-09-18 | 2023-08-04 | 杭州欧若数网科技有限公司 | 一种基于图数据库的分布式索引方法和系统 |
CN112115314A (zh) * | 2020-09-16 | 2020-12-22 | 江苏开拓信息与系统有限公司 | 一种政务通用大数据聚合检索系统及构建方法 |
US20220207043A1 (en) * | 2020-12-28 | 2022-06-30 | Vmware, Inc. | Entity data services for virtualized computing and data systems |
-
2021
- 2021-04-15 CN CN202110403274.5A patent/CN112800287B/zh active Active
- 2021-08-17 US US17/445,218 patent/US20220335086A1/en active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102193983A (zh) * | 2011-03-25 | 2011-09-21 | 北京世纪互联工程技术服务有限公司 | 图形数据库基于关系路径的节点数据过滤方法 |
CN108664617A (zh) * | 2018-05-14 | 2018-10-16 | 广州供电局有限公司 | 基于图像识别与检索的快速营销服务方法 |
CN111177303A (zh) * | 2019-12-18 | 2020-05-19 | 紫光云(南京)数字技术有限公司 | 基于phoenix的Hbase二级全文索引方法及系统 |
CN111966843A (zh) * | 2020-08-14 | 2020-11-20 | 北京同心尚科技发展有限公司 | 图数据库构建方法、路径搜索方法、装置和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112800287A (zh) | 2021-05-14 |
US20220335086A1 (en) | 2022-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112800287B (zh) | 基于图数据库的全文索引方法和系统 | |
US10467245B2 (en) | System and methods for mapping and searching objects in multidimensional space | |
CN107784044B (zh) | 表数据查询方法及装置 | |
Zakerzadeh et al. | Privacy-preserving big data publishing | |
US20150234927A1 (en) | Application search method, apparatus, and terminal | |
US10146818B2 (en) | Computing system | |
US20200272610A1 (en) | Method, apparatus, device and medium for storing and querying data | |
EP3516539B1 (en) | Techniques for in-memory key range searches | |
CN107368527B (zh) | 基于数据流的多属性索引方法 | |
CN108959538B (zh) | 全文检索系统及方法 | |
CN112363979A (zh) | 一种基于图数据库的分布式索引方法和系统 | |
CN112015820A (zh) | 分布式图数据库实现的方法、系统、电子装置和存储介质 | |
KR102368775B1 (ko) | 인덱스 관리 방법, 장치, 기기 및 저장 매체 | |
WO2018036549A1 (zh) | 分布式数据库查询方法、装置及管理系统 | |
CN113553339B (zh) | 数据查询方法、中间件、电子装置和存储介质 | |
EP2897054A2 (en) | Entity resolution from documents | |
CN112100152A (zh) | 业务数据处理方法、系统、服务器和可读存储介质 | |
US10558636B2 (en) | Index page with latch-free access | |
CN114969441A (zh) | 基于图数据库的知识挖掘引擎系统 | |
CN114398371A (zh) | 数据库集群系统多副本分片方法、装置、设备及存储介质 | |
CN108154024B (zh) | 一种数据检索方法、装置及电子设备 | |
CN115918110A (zh) | 使用键值存储库的空间搜索 | |
CN104536785A (zh) | 实时系统更新方法及装置 | |
CN107291875B (zh) | 一种基于元数据图的元数据组织管理方法和系统 | |
CN114741570A (zh) | 图数据库的查询方法、索引创建方法及相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |