CN117407391A - 数据库的全文索引方法、装置、计算机设备和存储介质 - Google Patents
数据库的全文索引方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN117407391A CN117407391A CN202311128094.6A CN202311128094A CN117407391A CN 117407391 A CN117407391 A CN 117407391A CN 202311128094 A CN202311128094 A CN 202311128094A CN 117407391 A CN117407391 A CN 117407391A
- Authority
- CN
- China
- Prior art keywords
- data
- full
- database
- statement
- text index
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 50
- 230000004044 response Effects 0.000 claims abstract description 17
- 230000011218 segmentation Effects 0.000 claims description 90
- 238000003780 insertion Methods 0.000 claims description 27
- 230000037431 insertion Effects 0.000 claims description 27
- 238000004590 computer program Methods 0.000 claims description 9
- 230000000694 effects Effects 0.000 abstract description 10
- 230000000875 corresponding effect Effects 0.000 description 64
- 230000018109 developmental process Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 12
- 238000012217 deletion Methods 0.000 description 11
- 230000037430 deletion Effects 0.000 description 11
- 238000012545 processing Methods 0.000 description 11
- 230000006872 improvement Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 239000012634 fragment Substances 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004575 stone Substances 0.000 description 1
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- 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
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种数据库的全文索引方法、装置、计算机设备和存储介质,属于全文索引技术领域。所述方法应用于部署在服务器上的中间件中,包括:接收终端设备发送的数据访问请求,数据访问请求用于请求对数据库中的数据进行访问;根据数据访问请求的类型,生成数据库访问语句,数据库访问语句包括如下至少一项:主数据表访问语句、全文索引表访问语句;执行数据库访问语句,得到数据库的访问结果;向终端设备发送响应信息,响应信息中包括数据库的访问结果。本申请可以达到为无全文索引功能的关系型数据库增加全文索引能力,并利用事务保证数据的一致性实现联表查询等综合能力提升的效果。
Description
技术领域
本申请涉及全文索引技术领域,具体而言,涉及一种数据库的全文索引方法、装置、计算机设备和存储介质。
背景技术
随着大数据时代的到来,用户对产品的使用便捷程度和使用体验感的要求普遍提高。在交易类型的软件即服务(Software-as-a-Service,简称SaaS)产品上既要求数据库具备传统交易型系统的关系模型、强一致性、SQL、联表查询、高可用性等能力,还要求数据库具备搜索引擎般的便捷的搜索能力。这对现有的数据库的实现方式提出了很高的要求和挑战。
传统交易型系统实现数据强一致的基石是依赖关系型数据库的事务保障:原子性(atomicity,或称不可分割性)、一致性(consistency)、隔离性(isolation,又称独立性)以及持久性(durability)。传统的关系型数据库实现查询能力的基础是B+树,新型的分布式关系型数据库一般基于多机分片结合日志结构合并树(Log Structure Merge Tree,简称LSM树)的方式实现索引。
然而,无论是传统的关系型数据库,还是新型的分布式关系型数据库,在同时支持数据强一致性、关系建模、联表查询和全文索引等的综合能力上尚存在欠缺。
发明内容
本申请的目的在于提供一种数据库的全文索引方法、装置、计算机设备和存储介质,可以达到为无全文索引功能的关系型数据库增加全文索引能力,并利用同事务保证数据的一致性、实现联表查询等综合能力提升的效果。
本申请的实施例是这样实现的:
本申请实施例的第一方面,提供一种数据库的全文索引方法,应用于部署在服务器上的中间件,包括:
接收终端设备发送的数据访问请求,数据访问请求用于请求对数据库中的数据进行访问;
根据数据访问请求的类型,生成数据库访问语句,数据库访问语句包括如下至少一项:主数据表访问语句、全文索引表访问语句,其中,全文索引表与主数据表一一对应,全文索引表用于记录对应的主数据表中的至少一个数据项的分词信息;
执行数据库访问语句,得到数据库的访问结果;
向终端设备发送响应信息,响应信息中包括数据库的访问结果。
作为一种可能的实现方式,根据数据访问请求的类型,生成数据库访问语句,包括:
若数据访问请求的类型为插入数据,则根据数据访问请求中的字段数据生成主数据表的插入语句;
对数据访问请求中的字段数据进行分词,得到多个全文索引字段分词;
根据多个全文索引字段分词,生成主数据表对应的全文索引表的插入语句。
作为一种可能的实现方式,执行数据库访问语句,得到数据库的访问结果,包括:
将主数据表的插入语句以及主数据表对应的全文索引表的插入语句写入同一事务;
执行事务,以同时向主数据表以及主数据表对应的全文索引表中插入数据,得到数据库的访问结果。
作为一种可能的实现方式,根据数据访问请求的类型,生成数据库访问语句,包括:
若数据访问请求的类型为删除数据,则根据数据访问请求中的字段数据生成主数据表的删除语句;
执行数据库访问语句,得到数据库的访问结果,包括:
执行主数据表的删除语句,以将主数据表中与字段数据匹配的记录行删除,并根据主数据表与全文索引表的外键约束,将全文索引表中对应的记录行删除。
作为一种可能的实现方式,根据数据访问请求的类型,生成数据库访问语句,包括:
若数据访问请求的类型为修改数据,则根据数据访问请求中的字段数据查询主数据表中的待更新记录行的标识;
根据待更新记录行的标识以及主数据表与全文索引表的外键约束,确定全文索引表中的待删除记录行;
生成全文索引表的删除语句,删除语句用于将待删除记录行删除;
根据数据访问请求中的字段数据生成主数据表的更新语句;
对数据访问请求中的字段数据进行分词,得到多个全文索引字段分词,并根据多个全文索引字段分词生成全文索引表的插入语句。
作为一种可能的实现方式,执行数据库访问语句,得到数据库的访问结果,包括:
将全文索引表的删除语句、主数据表的更新语句以及全文索引表的插入语句写入同一事务;
执行事务,以同时更新主数据表中的待更新记录行以及在主数据表对应的全文索引表中插入待更新记录行对应的分词结果,得到数据库的访问结果。
作为一种可能的实现方式,根据数据访问请求的类型,生成数据库访问语句,包括:
若数据访问请求的类型为查询数据,则对数据访问请求中的字段数据进行分词,得到多个全文索引字段分词;
根据多个全文索引字段分词,生成主数据表对应的全文索引表的查询语句。
作为一种可能的实现方式,执行数据库访问语句,得到数据库的访问结果,包括:
执行主数据表对应的全文索引表的查询语句,得到数据访问请求对应的目标主数据表中至少一个目标记录行的标识;
生成并执行针对目标主数据表的查询语句,得到目标主数据表中各目标记录行的数据,得到数据库的访问结果。
本申请实施例的第二方面,提供了一种数据库的全文索引装置,该数据库的全文索引装置包括:
接收模块,用于接收终端设备发送的数据访问请求,数据访问请求用于请求对数据库中的数据进行访问;
生成模块,用于根据数据访问请求的类型,生成数据库访问语句,数据库访问语句包括如下至少一项:主数据表访问语句、全文索引表访问语句,其中,全文索引表与主数据表一一对应,全文索引表用于记录对应的主数据表中的至少一个数据项的分词信息;
执行模块,用于执行数据库访问语句,得到数据库的访问结果;
发送模块,用于向终端设备发送响应信息,响应信息中包括数据库的访问结果。
本申请实施例的第三方面,提供了一种计算机设备,所述计算机设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述第一方面所述的数据库的全文索引方法。
本申请实施例的第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的数据库的全文索引方法。
本申请实施例的有益效果包括:
本申请实施例提供的一种数据库的全文索引方法,通过服务器上部署的中间件接收终端设备的数据访问请求,生成相应的数据库访问语句,中间件基于终端设备与数据库的通信协议创建主数据表,同时基于数据库的外键约束条件创建与主数据表级联的全文索引数据表,主数据表用于存储终端设备发送的数据,全文索引表用于存储主数据表中的全文索引字段分词后的结果,根据数据库访问语句对主数据表和全文索引表中的数据进行修改,进而实现对数据库的访问,这样可以将数据一致性、关系建模和联表查询等的综合能力都集成在中间件上,无需将各业务与数据库建立连接,只需要通过其对应的主数据表与全文索引表的联表查询,就可以对数据库进行全文索引。如此,可以达到为无全文索引功能的关系型数据库增加全文索引能力,并利用事务保证数据的一致性、实现联表查询等综合能力提升的效果。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为现有技术提供的一种数据库数据访问结构示意图;
图2为现有技术提供的另一种数据库数据访问结构示意图;
图3为本申请实施例提供的数据库数据访问结构示意图;
图4为本申请实施例提供的一种主数据表与全文索引表联表的示意图;
图5为本申请实施例提供的一种数据库的全文索引方法的流程图;
图6为本申请实施例提供的第二种数据库的全文索引方法的流程图;
图7为本申请实施例提供的第三种数据库的全文索引方法的流程图;
图8为本申请实施例提供的第四种数据库的全文索引方法的流程图;
图9为本申请实施例提供的第五种数据库的全文索引方法的流程图;
图10为本申请实施例提供的一种数据库的全文索引装置的结构示意图;
图11为本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,数据库的全文索引方法主要是建立各终端设备与数据库的连接,通过数据库获取终端设备发送的数据访问请求,分析各数据访问请求包含的数据结构,基于该数据结构利用相匹配的数据库的查询语句与数据库中的数据进行关联,然后将数据库中关联的数据作为数据访问的结果。然而,基于与终端设备的数据访问请求的数据结构相匹配的数据库的查询语句,实现与数据库中的数据进行关联得到数据访问结果,这种方案无法保证同事务数据的一致性,也无法建立终端设备与数据库的连表关联。另外,对于没有全文索引能力的数据库就无法进行全文数据索引,这样就无法根据终端的数据访问请求访问这些没有全文索引能力的数据库中的数据。
为此,本申请实施例提供了数据库的全文索引方法,该方法应用于部署在服务器上的中间件中,通过接收终端设备的数据访问请求,基于数据访问请求的类型生成相对应的数据库访问语句,执行数据库访问语句访问数据库中的数据,将数据库访问结果发送给终端设备作为数据访问请求的响应信息。其中,中间件接收终端设备的数据访问请求将数据访问请求包含的数据填入主数据表中,并利用分词器将数据访问请求的字段数据进行分词处理,并拦截数据库的数据创建全文索引表,根据全文索引字段分词结果生成相应的数据库访问语句,实现数据库访问,如此可以为无全文索引功能的关系型数据库增加全文索引能力,还可以利用同事务保证数据的一致性、实现联表查询等综合能力的提升的效果。
图1为现有技术提供的一种数据库数据访问示意图,参见图1,是在终端设备上的应用程序APP上部署一个软件开发工具包SDK,用户在终端设备上使用应用程序APP发送数据访问请求时,软件开发工具包SDK将应用程序APP发送的数据访问请求中包含的字段数据生成全文索引表子查询或关联查询,再通过应用程序接口JDBC将全文索引表子查询或关联查询拼接到数据库中,实现数据访问的目的。但这种数据库数据访问实现方式中,终端设备执行每个事务时都需要终端设备与数据库建立连接,开发每个应用程序时,应用程序都需要支持软件开发工具包SDk,且每个应用程序都需要部署一个软件开发工具包SDK,因此会导致应用程序开发成本稿且事务执行使用成本增高。
图2为本申请实施例提供的第二种数据库数据访问结构示意图,参见图2,是在终端设备上的应用程序数据接口JDBC调用软件开发数据包SDK,用户通过终端设备上部署的应用程序APP向数据库发送数据库数据访问请求,应用程序APP发送的数据库数据访问请求经应用程序数据接口JDBC传输并被拦截,应用程序数据接口JDBC调用软件开发工具包SDK解析数据库数据访问请求,识别出数据库数据访问请求中的全文索引搜索字段数据,并将该字段数据翻译成对应的全文索引表的关联查询语句,应用程序数据接口JDBC执行该全文索引表的关联查询语句访问数据库中的数据。但这种数据库数据访问实现方式中,每个终端设备的应用程序数据接口JDBC上都需要支持软件开发数据包SDK的调用,软件开发工具包SDK每次更新都需要将终端设备执行的事务与数据库建立连接。
图3为本申请实施例提供的数据库数据访问结构示意图,参见图3,本申请提供的数据库数据访问实现方式是由部署在服务器上的中间件来实现,本申请将事务数据一致性、主数据表和全文索引表的联表能力等综合全文索引功能都集成在服务器的中间件上。其中,用户通过终端设备上的应用程序APP发出数据库数据访问请求,应用程序APP将数据库数据访问请求经由应用程序数据接口JDBC发送给服务器上的中间件,中间件调用软件开发工具包SDK解析数据库数据访问请求并识别出数据库数据访问请求中的全文索引搜索字段数据,中间件将该字段数据替换成全文索引子查询,中间件基于与终端设备的通信协议创建主程序表,同时中间件基于与数据库的通信协议建立全文索引表,将终端设备发送的数据访问请求中的数据填充至主数据表,并同时基于主程序表的数据对应填充全文索引表中的数据。中间件调用外键约束将主程序表和全文索引表进行关联,中间件可以调用任意分词器对终端设备发送的数据访问请求包含的字段数据进行分词处理,并基于终端设备发起的事务将主程序表和全文索引表的数据进行关联,保证事务数据一致性。
综上,对比图1、图2以及图3可知,本申请实施例提供的部署在服务器上的中间件可以为没有全文索引功能的数据库增加全文索引能力,终端设备可以通过中间件访问没有全文索引功能的数据库中的数据,并能根据事务需求得到相应的数据访问结果。其次,终端设备执行每个事务时,无需再与数据库进行重新连接,由中间件将终端设备的数据与数据库的数据进行关联。因此,本申请提供的中间件可以为无全文索引功能的关系型数据库增加全文索引能力,还可以利用同事务保证数据的一致性、实现联表查询等综合能力的提升。
图4为本申请实施例提供的一种主数据表与全文索引表联表的示意图,参见图4,主数据表和全文索引表之间基于数据库的外键约束功能建立关联,使得主数据表和全文索引表的数据一致且保证数据的完成行。其中,主数据表和全文索引表之间的关联查询还可以使得主数据表和全文索引表之间实时级联更新和级联删除。
下面对本申请实施例提供的数据库的全文索引方法进行详细地解释说明。
图5为本申请提供的一种数据库的全文索引方法的流程图,该方法应用于服务器上部署的中间件中。参见图5,本申请实施例提供一种数据库的全文索引方法,包括:
S501、接收终端设备发送的数据访问请求,数据访问请求用于请求对数据库中的数据进行访问。
可选地,用户通过终端设备上部署的应用程序发送访问数据库的数据访问请求,数据访问请求用于请求访问数据库中的数据,数据访问请求包括:插入数据请求、删除数据请求、修改数据请求以及查询数据请求。
S502、根据数据访问请求的类型,生成数据库访问语句,数据库访问语句包括如下至少一项:主数据表访问语句、全文索引表访问语句,其中,全文索引表与主数据表一一对应,全文索引表用于记录对应的主数据表中的至少一个数据项的分词信息。
可选地,数据访问请求的类型是由数据访问请求包含的数据的字段数据决定的,服务器上部署的中间件接收来自终端设备的数据访问请求,中间件调用软件开发工具包识别数据访问请求中包含的字段数据,并将数据访问请求中的字段数据翻译成对应的全文索引字,根据全文索引字查询确定数据库访问类型,根据全文索引字查询生成数据库访问语句。
可选地,主数据表是由中间件基于服务器与终端设备之间的通信协议创建的表格,用于存储数据访问请求中的数据类型、记录行地址、数据名称以及标语;与主数据表一一对应的全文索引表用于存储数据访问请求的数据类型、索引的列名、使用的分词器名、全文索引字段分词结果以及外键约束的条件。
可选地,主数据表访问语句用于读取主数据表中的数据访问请求的各字段数据,全文索引表访问语句用于读取全文索引表中各字段数据对应的各分词结果。
表1为本申请实施例提供的主数据表和全文索引表的对应关系表,如下表所示:
表1主数据表和全文索引表的对应关系表
可选地,主数据表和全文索引表都是由中间件基于通信协议自动创建的,主数据表和全文索引表是一一对应的,主数据表和全文索引表之间通过外键约束实现查询联表。
S502、执行数据库访问语句,得到数据库的访问结果。
可选地,执行数据库访问语句,可以对数据库中的数据进行增加、删除、修改和查询。对数据库的数据进行增加、删除、修改和查询后的结果就是数据库的访问结果,如对数据库的数据进行增加也就是在数据库中插入新的数据,就是数据库访问的一种访问结果。
S504、向终端设备发送响应信息,响应信息中包括数据库的访问结果。
可选地,对数据库执行数据库访问语句后,同时向终端设备发送响应信息,响应信息用于反馈数据访问请求的访问结果,响应信息包括数据库的访问结果,如对数据库的数据进行增加也就是在数据库中插入新的数据,响应结果就包括插入新的数据内容等。
在本申请实施例中,通过服务器上部署的中间件接收终端设备的数据访问请求,生成相应的数据库访问语句,中间件基于终端设备与数据库的通信协议创建主数据表,同时基于数据库的外键约束条件创建与主数据表级联的全文索引数据表,主数据表用于存储终端设备发送的数据,全文索引表用于存储主数据表中的全文索引字段分词后的结果,根据数据库访问语句对主数据表和全文索引表中的数据进行修改,进而实现对数据库的访问,这样可以将数据一致性、关系建模和联表查询等的综合能力都集成在中间件上,无需将各业务与数据库建立连接,只需要通过其对应的主数据表与全文索引表的联表查询,就可以对数据库进行全文索引。如此,可以达到为无全文索引功能的关系型数据库增加全文索引能力,并利用同事务保证数据的一致性、实现联表查询等综合能力提升的效果。
一种可能的实现方式中,参见图6,当确定终端设备100发出的数据请求类型为插入数据请求时,上述步骤S502和上述步骤S503的操作具体可以为:
S601、若数据访问请求的类型为插入数据,则根据数据访问请求中的字段数据生成主数据表的插入语句。
可选地,服务器上部署的中间件接收终端设备发送的数据访问请求,并从数据访问请求包含的数据中识别出数据访问请求中包括的字段数据,中间件调用软件开发工具包解析数据访问请求中的字段数据中的字段数据,并将数据访问请求中的字段数据翻译成对应的全文索引字查询关联,若数据访问请求包含的字段数据翻译的全文索引字为创建索引字,则确定该数据访问请求的类型为插入数据请求,根据数据访问请求包含的字段数据生成主数据表的插入语句。
可选地,根据数据访问请求中的字段数据确定主数据表的插入语句,主数据表的插入语句用于指示将插入数据访问请求包含的数据插入主数据表中。
示例性的,用户A通过终端设备a创建一个插入事务,发出数据访问请求为“B是一家火星公司”,中间件M识别该数据访问请求中的字段数据为“B是一家火星公司”并将该字段数据翻译成对应的全文索引字子查询,确定该数据访问请求为插入数据请求,则生成主数据表的插入语句,如“INSERT INTO company(name,sologan)VALUES:(‘B’,‘B是一家火星公司’)。
S602、对数据访问请求中的字段数据进行分词,得到多个全文索引字段分词。
可选地,中间件可以调用任意分词器对数据访问请求中的字段数据进行分词,分词器可以为ngram、ik、pinyin等,本申请对此不做具体限定。
可选地,中间件调用分词器对数据访问请求中的字段数据进行分词,可以得到多个全文索引字段分词结果。
示例性的,中间件M接收到的数据访问请求为“B是一家火星公司”后,中间件调用ngram(2,3)分词器,将数据访问请求包含的字段数据“B是一家火星公司”分词处理后得到的分词结果为“B是”、“B是一”、“是一”、“是一家”、“一家”、“一家火”、“家火”、“家火星”、“火星”、“火星公”、“星公”、“星公司”、“公司”。
S603、根据多个全文索引字段分词,生成主数据表对应的全文索引表的插入语句。
可选地,针对全文索引字段分词后得到的多个全文索引字段分词生成主数据表对应的全文索引表的插入语句。
示例性的,中间件M基于数据访问请求包含的字段数据“B是一家火星公司”分词处理后得到的分词结果为“B是”、“B是一”、“是一”、“是一家”、“一家”、“一家火”、“家火”、“家火星”、“火星”、“火星公”、“星公”、“星公司”、“公司”生成主数据表的“B是一家火星公司”对应的全文索引表的插入语句,如:“INSERT INTO company_fti(field_name,analyzer,word,doc_id)VALUES”。
S604、将主数据表的插入语句以及主数据表对应的全文索引表的插入语句写入同一事务。
可选地,利用数据库与终端设备事务间的关将主数据表的插入语句以及主数据表对应的全文索引表的插入语句写入同一事务中,可以保证同一事务中主数据表和全文索引数据表的数据一致性以及数据完整性。
S605、执行事务,以同时向主数据表以及主数据表对应的全文索引表中插入数据,得到数据库的访问结果。
可选地,执行事务时,同时执行主数据表的插入语句以及全文索引表的插入语句,使得主数据表的插入语句包含的数据插入主数据表,全文索引表的插入语句包含的数据插入全文索引表。
示例性的,若确定终端设备a执行的是数据插入事务,则执行事务时,操作程序如下:
BEGIN;
INSERT INTO company(name,sologan)VALUES('B','B是一家火星公司');
SELECT@@IDENTITY;
INSERT INTO company_fti(field_name,analyzer,word,doc_id)VALUES
('sologan','ngram','B是',1);
('sologan','ngram','B是一',1);
('sologan','ngram','是一',1);
('sologan','ngram','是一家',1);
('sologan','ngram','一家',1);
('sologan','ngram','一家火',1);
('sologan','ngram','家火',1);
('sologan','ngram','家火星',1);
('sologan','ngram','火星',1);
('sologan','ngram','火星公',1);
('sologan','ngram','大的',1);
('sologan','ngram','星公',1);
('sologan','ngram','星公司',1);
('sologan','ngram','公司',1);
('sologan','ik','B',1);
('sologan','ik','是',1);
('sologan','ik','一家',1);
('sologan','ik','一',1);
('sologan','ik','家',1);
('sologan','ik','火星',1);
('sologan','ik','公司',1);
COMMIT.
可选地,将数据访问请求指示的插入数据插入主数据表,以及将主数据表插入数据的分词结果插入全文索引表,基于全文索引表中的全文索引子查询在数据库中搜索与全文索引字相匹配的结果。其中,需要进行插入的数据是由分词器识别出来的,由分词器识别出的模糊查询列分词翻译成相应的全文索引表的插入语句。
在本申请实施例中,通过中间件确定终端设备的数据访问请求的类型,若数据访问请求的类型为插入数据请求,根据数据访问请求的字段数据生成主数据表的插入语句,并将数据访问请求的中的字段数据进行分词处理得到多个分词结果,根据全文索引字段分词生成相应的全文索引表的插入语句,将主数据表的插入语句以及全文索引表的插入语句写入同一事务保证主数据表和全文索引表的数据一致性和完整性,基于主数据表和全文索引表的联表查询功能实现将数据访问请求指示的数据插入数据库中完成数据库访问。如此,可以达到无全文索引功能的关系型数据库增加全文索引能力,并利用同事务保证数据的一致性、实现联表查询等综合能力提升的效果。
一种可能的实现方式中,参见图7,当确定终端设备100发出的数据请求类型为删除数据请求时,上述步骤S502和步骤S503的操作具体可以为:
S701、若数据访问请求的类型为删除数据,则根据数据访问请求中的字段数据生成主数据表的删除语句。
可选地,服务器上部署的中间件接收终端设备发送的数据访问请求,并从数据访问请求包含的数据中识别出数据访问请求为删除数据请求,中间件调用软件开发工具包解析数据访问请求中的字段数据,并将数据访问请求中的字段数据翻译成对应的全文索引字查询关联,若数据访问请求包含的字段数据翻译的全文索引字为删除索引字,则确定该数据访问请求的类型为删除数据请求,根据数据访问请求包含的字段数据生成主数据表的删除语句。
可选地,根据数据访问请求中的字段数据确定主数据表的删除语句,主数据表的删除语句用于指示根据数据访问请求包含的数据删除主数据表中对应的数据。
示例性的,中间件M接收终端设备a发送的数据访问请求,识别该数据访问请求中的字段数据,并基于数据访问请求中的字段数据查询到主数据表指定的行地址id=1,生成相应的主数据表的删除语句,如:DELETE FROM company WHERE id=1。
S702、执行主数据表的删除语句,以将主数据表中与字段数据匹配的记录行删除,并根据主数据表与全文索引表的外键约束,将全文索引表中对应的记录行删除。
可选地,执行主数据表的删除语句可以将主数据表种该删除语句指定的记录行的数据删除,根据主数据表与全文索引表的级联更新,全文索引表根据主数据表的删除数据同时删除与之匹配的记录行的数据。
示例性的,若主数据表和全文索引表之间的外键约束为doc_id→id,主数据表的删除语句为DELETE FROM company WHERE id=1,执行该删除语句时删除主数据表中id=1时,全文索引表基于级联更新删除对应的doc_id=1这一记录行的数据。
在本申请实施例中,通过服务器上部署的中间件将主数据表和全文索引表之间进行联表,得以实现主数据表和全文索引表之间的级联更新,可以保证事务执行时数据的一致性,还可以实现全文索引的联表查询。
一种可能的实现方式中,参见图8,当确定终端设备100发出的数据请求类型为修改数据请求时,上述步骤S502和上述步骤S503的操作具体可以为:
S801、若数据访问请求的类型为修改数据,则根据数据访问请求中的字段数据查询主数据表中的待更新记录行的标识。
可选地,服务器上部署的中间件接收终端设备发送的数据访问请求,并从数据访问请求包含的数据中识别出数据访问请求为修改数据请求,中间件调用软件开发工具包解析数据访问请求中的字段数据,并将数据访问请求中的字段数据翻译成对应的全文索引字查询关联,若数据访问请求包含的字段数据翻译的全文索引字为修改索引字,则确定该数据访问请求的类型为修改数据请求。
可选地,根据数据访问请求中的字段数据确定主数据表的待更新数据的记录行的标识,记录行的标识用于指示记录行的行地址。
示例性的,中间件M接收终端设备a发送的数据访问请求,识别该数据访问请求中的字段数据,并基于数据访问请求中的字段数据查询到主数据表指定的行地址id=1,根据id=1查询主数据表中该标识的记录行,确定主数据表中记录行标识为id=1为待更新数据的行地址。
S802、根据待更新记录行的标识以及主数据表与全文索引表的外键约束,确定全文索引表中的待删除记录行。
可选地,基于主数据表和全文索引表之间的外键约束条件,根据主数据表中的待更新记录行的标识就可以确定全文索引表的待删除记录行。
值得说明的是,更新数据需要先将待更新数据对应的记录行中的原始数据删除后,再写入待更新数据。
示例性的,若主数据表和全文索引表的外键约束条件为doc_id→id,确定主数据表中的待更新数据的记录行标识为id=1,则基于外键约束条件确定全文索引表对应的删除数据的记录行标识为doc_id=1。
S803、生成全文索引表的删除语句,删除语句用于将待删除记录行删除。
可选地,基于主数据表和全文索引表的外键约束条件以及主数据表中需要更新数据的记录行地址确定全文索引表中需要删除原数据的记录行的地址,生成全文索引表的删除语句,全文索引表的删除语句用于指示删除待删除记录行的数据。
值得说明的是,全文索引表的待删除记录行记录的是主数据表待更新数据记录行前数据的分词结果,主数据表中的待更新数据替换前数据,则相应的全文索引表中的前数据的分词结果需要删除更新。
示例性的,若主数据表中的待更新数据的记录行标识为id=1,基于外键约束条件确定全文索引表对应的删除数据的记录行标识为doc_id=1,则生成全文索引表的删除语句为DELETE FROM company_fti WHERE doc_id=1。
S804、根据数据访问请求中的字段数据生成主数据表的更新语句。
可选地,根据数据访问请求中的字段数据生成主数据表的更新语句,主数据表的更新语句用于指示将主数据表的哪个记录行记录的数据更新为当前待更新的数据。
示例性的,中间件M基于数据访问请求中的字段数据查询到主数据表指定的行地址id=1,根据id=1查询主数据表中该标识的记录行记录的数据为“B”,根据数据访问请求的字段数据生成的查询语句为SELECT id FROM company WHERE name='B',并生成主数据表的更新语句,更新语句为“UPDATE company SET name='Tesla',sologan='E是一家火星公司'WHERE id=1”,更新语句用于将主数据表中记录行标识为id=1中记录的数据“B是一家火星公司”更新为“E是一家火星公司”。
S805、对数据访问请求中的字段数据进行分词,得到多个全文索引字段分词,并根据多个全文索引字段分词生成全文索引表的插入语句。
可选地,对修改数据请求中的字段数据进行分词处理可以得到多个全文索引字段分词。
示例性的,若中间件M接收的修改数据请求中包含的字段数据为“E是一家火星公司”,中间件M调用ngram(2,3)分词器对数据访问请求中的字段数据进行分词,可以得到的全文索引字段分词结果为:“E是”、“E是一”、“是一”、“是一家”、“一家”、“一家火”、“家火”、“家火星”、“火星”、“火星公”、“星公”、“星公司”、“公司”。
可选地,根据全文索引字段分词结果生成全文索引表的插入语句,全文索引表的插入语句用于指示将这些全文索引字段分词插入全文索引表中。
示例性的,若已知中间件M将终端设备a发送的数据访问请求的字段数据分词处理后得到的多个全文索引字段分词分别为:“E是”、“E是一”、“是一”、“是一家”、“一家”、“一家火”、“家火”、“家火星”、“火星”、“火星公”、“星公”、“星公司”、“公司”,根据分词结果生成全文索引表的插入语句为“INSERT INTO company_fti(field_name,analyzer,word,doc_id)VALUES”。
S806、将全文索引表的删除语句、主数据表的更新语句以及全文索引表的插入语句写入同一事务。
可选地,将全文索引表的删除语句、主数据表的更新语句以及全文索引表的插入语句写入同一事务,用以保证同一事务修改数据后数据保持一致性和完整性,在同一事务中保证主数据表和全文索引表的关联查询。
S807、执行事务,以同时更新主数据表中的待更新记录行以及在主数据表对应的全文索引表中插入待更新记录行对应的分词结果,得到数据库的访问结果。
可选地,执行事务时,主数据表中的待更新记录行写入待更新数据,相应的全文索引表中被删除数据的记录行写入待更新数据的字段数据的分词结果,更新后的全文索引字对应更新其对应的数据库数据。
示例性的,若确定将主数据表中的“B是一家火星公司”更新为“E是一家火星公司”,更新程序如下:
BEGIN;
SELECT id FROM company WHERE name='B';
UPDATE company SET name='E',sologan='E是一家火星公司'WHERE id=1;
DELETE FROM company_fti WHERE doc_id=1;
ze
('sologan','ngram','E是',1);
('sologan','ngram','E是一',1);
('sologan','ngram','是一',1);
('sologan','ngram','是一家',1);
('sologan','ngram','一家',1);
('sologan','ngram','一家火',1);
('sologan','ngram','家火',1);
('sologan','ngram','家火星',1);
('sologan','ngram','火星',1);
('sologan','ngram','火星公',1);
('sologan','ngram','星公',1);
('sologan','ngram','星公司',1);
('sologan','ngram','公司',1);
COMMIT.
在本申请实施例中,通过中间件确定终端设备的数据访问请求为修改数据请求时,根据数据访问请求的字段数据确定主数据表中需要更新数据的记录行的标识,根据主数据表和全文索引表的外键约束关系确定全文索引表中需要删除原全文索引字段分词的记录行,删除全文索引表中需要删除的分词结果,对待更新数据中的字段数据进行分词处理,将待更新数据的分词结果写入全文索引表,实现全文索引表和主数据表的数据更新。如此,可以达到为无全文索引功能的关系型数据库增加全文索引能力,并利用同事务保证数据的一致性、实现联表查询等综合能力提升的效果。
一种可能的实现方式中,参见图9,当确定终端设备100发出的数据请求类型为查询数据请求时,上述步骤S502和上述步骤S503的操作具体可以为:
S901、若数据访问请求的类型为查询数据,则对数据访问请求中的字段数据进行分词,得到多个全文索引字段分词。
可选地,服务器上部署的中间件接收终端设备发送的数据访问请求,并从数据访问请求包含的数据中识别出数据访问请求为查询数据请求,中间件调用软件开发工具包解析数据访问请求中的字段数据,并将数据访问请求中的字段数据翻译成对应的全文索引字查询关联,若数据访问请求包含的字段数据翻译的全文索引字为查询索引字,则确定该数据访问请求的类型为查询数据请求。
可选地,中间件调用分词器对数据访问请求中包含的字段数据进行分词,得到多个全文索引字段分词,分词结果用于指示全文索引,加快搜索的效率。
值得说明的是,查询数据访问请求中包含的字段数据翻译得到的全文索引字就为待查询数据的索引字。
示例性的,中间件M接收终端设备a发送的查询数据访问请求,识别该查询数据访问请求中的字段数据为“B是一家火星公司”,并采用分词器ngram(2,3)对数据访问请求中字段数据进行分词处理,得到多个全文索引字段分词分别为“B是”、“B是一”、“是一”、“是一家”、“一家”、“一家火”、“家火”、“家火星”、“火星”、“火星公”、“星公”、“星公司”、“公司”;采用ik分词器得到的分词结果为“B”、“是”、“一家”、“一”、“家”、“火星”、“火”、“星”、“公司”。
S902、根据多个全文索引字段分词,生成主数据表对应的全文索引表的查询语句。
可选地,根据数据访问请求中字段数据的分词结果确定全文索引表的查询语句,全文索引表的查询语句包括全文索引字段分词对应于全文索引表中的记录行的位置。
示例性的,若数据访问请求中的字段数据的分词结果“B”对应全文索引表中的记录行的标识为doc_id=1,根据全文索引字段分词生成全文索引表的查询语句如下:
S903、执行主数据表对应的全文索引表的查询语句,得到数据访问请求对应的目标主数据表中至少一个目标记录行的标识。
可选地,执行全文索引表的查询语句时,可以得到数据访问请求对应的主数据表。基于主数据表和全文索引表的外键约束,主数据表中有与查询语句中包含的全文索引表的记录行的标识匹配的记录行标识,就确定该主数据表为目标主数据表。
可选地,全文索引表的查询语句可以有多个,针对多个全文索引字段分词得到的,全文索引表与主数据表又是一一对应的关系,故确定的目标主数据表中至少有一个与全文索引表的记录行标识相匹配的记录行标识。
S904、生成并执行针对目标主数据表的查询语句,得到目标主数据表中各目标记录行的数据,得到数据库的访问结果。
可选地,执行针对目标主数据表的查询语句,可以得到目标主数据表中目标记录行的数据,同时也可以确定数据库的数据访问结果。其中,中间件使用分词器确定模糊查询的列分词,根据需要模糊查询的列分词进行全文索引,确定数据库中的查询结果。
示例性的,若根据终端设备发送的数据访问请求确定数据访问请求为查询语句,则执行数据查询的程序如下:
在本申请实施例中,通过中间件确定终端设备的数据访问请求的类型为查询数据请求,对查询数据请求包含的字段数据进行分词,根据全文索引字段分词结果确定全文索引表的查询语句,执行查询语句得到目标主数据表,执行目标主数据表的查询语句得到对应的数据,实现数据库数据查询,得到数据访问结果。如此,可以达到利用同事务保证数据的一致性、实现联表查询等综合能力提升的效果。
下述对用以执行的本申请所提供数据库的全文索引方法的装置、设备及计算机可读存储介质等进行说明,其具体的实现过程以及技术效果参见上述,下述不再赘述。
图10是本申请实施例提供的一种数据库的全文索引装置的结构示意图,参见图10,该装置包括:
接收模块1001,用于接收终端设备发送的数据访问请求,数据访问请求用于请求对数据库中的数据进行访问;
生成模块1002,用于根据数据访问请求的类型,生成数据库访问语句,数据库访问语句包括如下至少一项:主数据表访问语句、全文索引表访问语句,其中,全文索引表与主数据表一一对应,全文索引表用于记录对应的主数据表中的至少一个数据项的分词信息;
执行模块1003,用于执行数据库访问语句,得到数据库的访问结果;
发送模块1004,用于向终端设备发送响应信息,响应信息中包括数据库的访问结果。
作为一种可选的实施方式,当服务器上部署的中间件401识别出终端设备100发送的数据访问请求的类型为插入数据请求时,生成模块1002具体用于:
若数据访问请求的类型为插入数据,则根据数据访问请求中的字段数据生成主数据表的插入语句;
对数据访问请求中的字段数据进行分词,得到多个全文索引字段分词;
根据多个全文索引字段分词,生成主数据表对应的全文索引表的插入语句。
作为一种可选的实施方式,当服务器上部署的中间件401识别出终端设备100发送的数据访问请求的类型为插入数据请求时,执行模块1003具体用于:
将主数据表的插入语句以及主数据表对应的全文索引表的插入语句写入同一事务;
执行事务,以同时向主数据表以及主数据表对应的全文索引表中插入数据,得到数据库的访问结果。
作为一种可选的实施方式,当服务器上部署的中间件401识别出终端设备100发送的数据访问请求的类型为删除数据请求时,生成模块1002具体用于:
若数据访问请求的类型为删除数据,则根据数据访问请求中的字段数据生成主数据表的删除语句;
作为一种可选的实施方式,当服务器上部署的中间件401识别出终端设备100发送的数据访问请求的类型为删除数据请求时,执行模块1003具体用于:
执行主数据表的删除语句,以将主数据表中与字段数据匹配的记录行删除,并根据主数据表与全文索引表的外键约束,将全文索引表中对应的记录行删除。
作为一种可选的实施方式,当服务器上部署的中间件401识别出终端设备100发送的数据访问请求的类型为修改数据请求时,生成模块1002具体用于:
若数据访问请求的类型为修改数据,则根据数据访问请求中的字段数据查询主数据表中的待更新记录行的标识;
根据待更新记录行的标识以及主数据表与全文索引表的外键约束,确定全文索引表中的待删除记录行;
生成全文索引表的删除语句,删除语句用于将待删除记录行删除;
根据数据访问请求中的字段数据生成主数据表的更新语句;
对数据访问请求中的字段数据进行分词,得到多个全文索引字段分词,并根据多个全文索引字段分词生成全文索引表的插入语句。
作为一种可选的实施方式,当服务器上部署的中间件401识别出终端设备100发送的数据访问请求的类型为修改数据请求时,执行模块1003具体用于:
将全文索引表的删除语句、主数据表的更新语句以及全文索引表的插入语句写入同一事务;
执行事务,以同时更新主数据表中的待更新记录行以及在主数据表对应的全文索引表中插入待更新记录行对应的分词结果,得到数据库的访问结果。
作为一种可选的实施方式,当服务器上部署的中间件401识别出终端设备100发送的数据访问请求的类型为查询数据请求时,生成模块1002具体用于:
若数据访问请求的类型为查询数据,则对数据访问请求中的字段数据进行分词,得到多个全文索引字段分词;
根据多个全文索引字段分词,生成主数据表对应的全文索引表的查询语句。
作为一种可选的实施方式,当服务器上部署的中间件401识别出终端设备100发送的数据访问请求的类型为查询数据请求时,执行模块1003具体用于:
执行主数据表对应的全文索引表的查询语句,得到数据访问请求对应的目标主数据表中至少一个目标记录行的标识;
生成并执行针对目标主数据表的查询语句,得到目标主数据表中各目标记录行的数据,得到数据库的访问结果。
上述装置用于执行前述实施例提供的方法,其实现原理和技术效果类似,在此不再赘述。
以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器,或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(Central Processing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称SOC)的形式实现。
图11是本申请实施例提供的一种计算机设备的结构示意图。参见图11,计算机设备包括:存储器1101、处理器1102,存储器1101中存储有可在处理器1102上运行的计算机程序,处理器1102执行计算机程序时,实现上述任意各个方法实施例中的步骤。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时可实现上述各个方法实施例中的步骤。
可选地,本申请还提供一种程序产品,例如计算机可读存储介质,包括程序,该程序在被处理器执行时用于执行上述任一数据库的全文索引方法实施例。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本发明各个实施例方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取存储器(英文:Random Access Memory,简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
上仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种数据库的全文索引方法,其特征在于,应用于部署在服务器上的中间件,包括:
接收终端设备发送的数据访问请求,所述数据访问请求用于请求对数据库中的数据进行访问;
根据所述数据访问请求的类型,生成数据库访问语句,所述数据库访问语句包括如下至少一项:主数据表访问语句、全文索引表访问语句,其中,所述全文索引表与所述主数据表一一对应,所述全文索引表用于记录对应的主数据表中的至少一个数据项的分词信息;
执行所述数据库访问语句,得到所述数据库的访问结果;
向所述终端设备发送响应信息,所述响应信息中包括所述数据库的访问结果。
2.根据权利要求1所述的数据库的全文索引方法,其特征在于,所述根据所述数据访问请求的类型,生成数据库访问语句,包括:
若所述数据访问请求的类型为插入数据,则根据所述数据访问请求中的字段数据生成所述主数据表的插入语句;
对所述数据访问请求中的字段数据进行分词,得到多个全文索引字段分词;
根据所述多个全文索引字段分词,生成所述主数据表对应的全文索引表的插入语句。
3.根据权利要求2所述的数据库的全文索引方法,其特征在于,所述执行所述数据库访问语句,得到所述数据库的访问结果,包括:
将所述主数据表的插入语句以及所述主数据表对应的全文索引表的插入语句写入同一事务;
执行所述事务,以同时向所述主数据表以及所述主数据表对应的全文索引表中插入数据,得到所述数据库的访问结果。
4.根据权利要求1所述的数据库的全文索引方法,其特征在于,所述根据所述数据访问请求的类型,生成数据库访问语句,包括:
若所述数据访问请求的类型为删除数据,则根据所述数据访问请求中的字段数据生成所述主数据表的删除语句;
所述执行所述数据库访问语句,得到所述数据库的访问结果,包括:
执行所述主数据表的删除语句,以将所述主数据表中与所述字段数据匹配的记录行删除,并根据所述主数据表与所述全文索引表的外键约束,将所述全文索引表中对应的记录行删除。
5.根据权利要求1所述的数据库的全文索引方法,其特征在于,所述根据所述数据访问请求的类型,生成数据库访问语句,包括:
若所述数据访问请求的类型为修改数据,则根据所述数据访问请求中的字段数据查询所述主数据表中的待更新记录行的标识;
根据所述待更新记录行的标识以及所述主数据表与所述全文索引表的外键约束,确定所述全文索引表中的待删除记录行;
生成所述全文索引表的删除语句,所述删除语句用于将所述待删除记录行删除;
根据所述数据访问请求中的字段数据生成所述主数据表的更新语句;
对所述数据访问请求中的字段数据进行分词,得到多个全文索引字段分词,并根据所述多个全文索引字段分词生成所述全文索引表的插入语句。
6.根据权利要求5所述的数据库的全文索引方法,其特征在于,所述执行所述数据库访问语句,得到所述数据库的访问结果,包括:
将所述全文索引表的删除语句、所述主数据表的更新语句以及所述全文索引表的插入语句写入同一事务;
执行所述事务,以同时更新所述主数据表中的待更新记录行以及在所述主数据表对应的全文索引表中插入所述待更新记录行对应的分词结果,得到所述数据库的访问结果。
7.根据权利要求1所述的数据库的全文索引方法,其特征在于,所述根据所述数据访问请求的类型,生成数据库访问语句,包括:
若所述数据访问请求的类型为查询数据,则对所述数据访问请求中的字段数据进行分词,得到多个全文索引字段分词;
根据所述多个全文索引字段分词,生成所述主数据表对应的全文索引表的查询语句。
8.根据权利要求7所述的数据库的全文索引方法,其特征在于,所述执行所述数据库访问语句,得到所述数据库的访问结果,包括:
执行所述主数据表对应的全文索引表的查询语句,得到所述数据访问请求对应的目标主数据表中至少一个目标记录行的标识;
生成并执行针对所述目标主数据表的查询语句,得到所述目标主数据表中各所述目标记录行的数据,得到所述数据库的访问结果。
9.一种计算机设备,其特征在于,包括:存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现上述权利要求1至8任一项所述的方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时,实现权利要求1至8中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311128094.6A CN117407391A (zh) | 2023-09-01 | 2023-09-01 | 数据库的全文索引方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311128094.6A CN117407391A (zh) | 2023-09-01 | 2023-09-01 | 数据库的全文索引方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117407391A true CN117407391A (zh) | 2024-01-16 |
Family
ID=89499000
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311128094.6A Pending CN117407391A (zh) | 2023-09-01 | 2023-09-01 | 数据库的全文索引方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117407391A (zh) |
-
2023
- 2023-09-01 CN CN202311128094.6A patent/CN117407391A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107247808B (zh) | 一种分布式NewSQL数据库系统及图片数据查询方法 | |
US11475034B2 (en) | Schemaless to relational representation conversion | |
KR102407510B1 (ko) | 데이터 저장 및 조회 방법, 장치, 기기 및 매체 | |
US7822710B1 (en) | System and method for data collection | |
US7533136B2 (en) | Efficient implementation of multiple work areas in a file system like repository that supports file versioning | |
CN108959538B (zh) | 全文检索系统及方法 | |
CN107038222B (zh) | 数据库缓存实现方法及其系统 | |
US9069813B2 (en) | Query translation for searching complex structures of objects | |
CN106484820B (zh) | 一种重命名方法、访问方法及装置 | |
JP2008102765A (ja) | 検索処理方法及び検索システム | |
TW200903324A (en) | Systems and methods for modeling partitioned tables as logical indexes | |
CN106407360B (zh) | 一种数据的处理方法及装置 | |
CN103810224A (zh) | 信息持久化和查询方法及装置 | |
CN113204571B (zh) | 涉及写入操作的sql执行方法、装置及存储介质 | |
CN106407376B (zh) | 重建索引方法及装置 | |
CN104423982A (zh) | 请求的处理方法和处理设备 | |
CN112912870A (zh) | 租户标识符的转换 | |
CN111984745B (zh) | 数据库字段动态扩展方法、装置、设备及存储介质 | |
CN112970011B (zh) | 记录查询优化中的谱系 | |
AU2019350694B2 (en) | Identification of records for post-cloning tenant identifier translation | |
CN111125216A (zh) | 数据导入Phoenix的方法及装置 | |
CN117407391A (zh) | 数据库的全文索引方法、装置、计算机设备和存储介质 | |
WO2023164294A1 (en) | Query splitter for an inverted index datastore | |
CN116361287A (zh) | 路径解析方法、装置以及系统 | |
CN114064007A (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 |