CN108959538A - 全文检索系统及方法 - Google Patents
全文检索系统及方法 Download PDFInfo
- Publication number
- CN108959538A CN108959538A CN201810699871.5A CN201810699871A CN108959538A CN 108959538 A CN108959538 A CN 108959538A CN 201810699871 A CN201810699871 A CN 201810699871A CN 108959538 A CN108959538 A CN 108959538A
- Authority
- CN
- China
- Prior art keywords
- index
- full
- text search
- text
- data
- 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.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及一种全文检索系统及方法。全文检索系统包括用户接口模块、数据库、全文检索中间件和全文检索引擎,其中:用户接口模块,用于在获取到索引操作时,通过数据库向全文检索中间件发送索引操作;全文检索中间件,用于在确定索引操作为查询索引操作时,向全文检索引擎发送查询索引操作;全文检索引擎,用于执行查询索引操作,得到查询结果。本公开的全文检索系统及方法,通过全文检索中间件能够实现全文检索引擎与数据库之间的解耦,从而能够实现对全文检索引擎进行更新或更换,也能够实现将全文检索引擎快速移植到其它数据库进行使用,扩大全文检索系统应用的范围,提高全文检索系统开发的便捷性。
Description
技术领域
本公开涉及大数据技术领域,尤其涉及一种全文检索系统及方法。
背景技术
图1示出相关技术中的全文检索系统的架构图。相关技术中,如图1所示,全文检索系统通过GPText User Interface获取索引操作,并将获取的索引操作发送给GPText Lib,由GPText Lib调用Solr CLI或者Native Call将索引操作发送给Solr,Solr执行索引操作。其中,索引操作可以包括查询索引操作、创建索引操作、导入索引数据操作、更新索引数据操作、添加索引列操作、删除索引列操作和删除索引操作等。
但是,如图1所示,全文检索引擎Solr与数据库Greenplum耦合度高,全文检索系统无法更新全文检索引擎Solr,也无法将全文检索引擎Solr更换为其它类型的全文检索引擎。此外,全文检索引擎Solr与数据库Greenplum之间的数据交互过程不透明,全文检索系统无法将全文检索引擎Solr移植到其它类型的数据库进行使用。数据库Greenplum对外的接口形式单一,不利于数据库Greenplum的再次开发。
发明内容
有鉴于此,本公开提出了一种全文检索系统及方法,以解决相关技术中全文检索系统中的数据库与全文检索引擎耦合度较高的问题。
根据本公开的一方面,提供了一种全文检索系统,所述全文检索系统包括用户接口模块、数据库、全文检索中间件和全文检索引擎,其中:
所述用户接口模块,用于在获取到索引操作时,通过所述数据库向所述全文检索中间件发送所述索引操作;
所述全文检索中间件,用于在确定所述索引操作为查询索引操作时,向所述全文检索引擎发送所述查询索引操作;
所述全文检索引擎,用于执行所述查询索引操作,得到查询结果。
根据本公开的另一方面,提供了一种全文检索方法,应用于全文检索系统中的全文检索中间件,所述方法包括:
接收数据库发送的索引操作;
在确定所述索引操作为查询索引操作时,向全文检索引擎发送所述查询索引操作,以使所述全文检索引擎执行所述查询索引操作,得到查询结果。
根据本公开的另一方面,提供了一种全文检索中间件,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行上述方法。
根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述方法。
本公开的全文检索系统及方法,通过全文检索中间件能够实现全文检索引擎与数据库之间的解耦,从而能够实现对全文检索引擎进行更新或更换,也能够实现将全文检索引擎快速移植到其它数据库进行使用,扩大全文检索系统应用的范围,提高全文检索系统开发的便捷性。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出相关技术中的全文检索系统的架构图。
图2示出根据本公开一实施例的全文检索系统的架构图。
图3示出根据本公开一实施例的全文检索系统的框图。
图4示出根据本公开一实施例的全文检索系统的框图。
图5示出根据本公开一实施例的全文检索系统的框图。
图6示出根据本公开一实施例的全文检索系统的框图。
图7示出根据本公开一实施例的全文检索方法的流程图。
图8示出根据本公开一实施例的全文检索方法的流程图。
图9示出根据本公开一实施例的全文检索中间件的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或者相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或者说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或者好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
为了使本技术领域的人员更好地理解本公开实施例中的技术方案,下面先对本公开实施例中涉及的部分技术术语进行简单说明。
Greenplum:是一种关系型数据库集群,可以认为Greenplum为多个独立的数据库服务组合成的逻辑数据库。Greenplum采用无共享(Shared-Nothing)架构,由控制节点(Master节点)和多个数据节点(Segment节点)通过相互连接(Interconnect)组成。
Shared Nothing架构:各个处理单元都有自己私有的CPU、内存和硬盘等,不存在共享资源,各处理单元之间通过协议通信,并行处理和扩展能力更好。各节点相互独立,各自处理自己的数据,处理之后的结果可能向上层汇总或者在节点间流转。Share-Nothing架构在扩展性和成本上都有明显优势。
Master节点:建立与客户端的连接和管理;解析SQL(Structured QueryLanguage,结构化查询语言)语句并形成执行计划;将执行计划向Segment节点分发,并收集Segment节点的执行结果;Master节点不存储业务数据,只存储数据字典。
Segment节点:业务数据的存储和存取;执行解析SQL语句得到的执行计划。
全文检索(FullText Search):是指计算机索引程序通过扫描文章中的每个词,对每个词创建一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序根据事先创建的索引进行查找,并将查询结果返回给用户的检索方式。全文检索需要具备创建索引和提供查询的基本功能。
Elasticsearch(简写:ES):是基于Lucene(用于全文检索和搜寻的开源程式库)的检索服务器,通过RESTful(Representational State Transfer,表现层状态转化)接口隐藏底层的复杂性,提供了分布式多用户能力的全文检索引擎,从而让全文检索变得简单。
Solr:是基于Lucene的检索服务器。对Lucene进行扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了完善的功能管理界面,是一款高性能的全文检索引擎。
索引:是指对数据库的表中一列或者多列的数据进行排序的一种结构,使用索引可以快速访问数据库的表中的特定信息。
查询索引操作:是指用于查询索引的操作命令。查询索引是指在获取到查询索引请求时,检索已创建的索引,并返回查询索引请求对应的查询结果的过程。
创建索引操作:是指用于创建索引的操作命令。创建索引是指创建索引的过程。通过创建索引能够提高对表的查询速度,对表中的数据列的数据进行检查。索引的名称可以为数据库名.表名。例如,detext为数据库名,表名为mobile,则创建的索引的名称可以为detext.mobile。
导入索引数据操作:是指用于导入索引数据的操作命令。导入索引数据是指在创建索引之后,首次将表中的数据导入索引的过程。例如,将表中的某些列数据导入索引。
更新索引数据操作:是指用于更新索引数据的操作命令。更新索引数据是指在创建索引并导入索引数据之后,如果数据库中的表增加或者减少数据,则将表增加的数据同步到索引,或者将表减少的数据从索引中删除的过程。例如,将表中的某些列增加的数据导入索引。
添加索引列操作:是指用于添加索引列的操作命令。添加索引列是指在创建索引并导入索引数据之后,将表中未导入索引的数据导入到索引的过程。例如,将表中未导入索引的某些列数据导入索引。
删除索引列操作:是指用于删除索引列的操作命令。删除索引列是指在创建索引并导入索引数据之后,将已经导入索引的表中的数据从索引中删除的过程。例如,将已经导入索引的某些列数据从索引中删除。
删除索引操作:是指用于删除索引的操作命令。删除索引是指将已经创建的索引删除的过程。通过删除索引能够释放硬盘空间。
图1示出相关技术中的全文检索系统的架构图。如图1所示:
GPText User Interface(Greenplum全文检索用户接口模块):用于向用户提供输入SQL语句的界面,用户可以通过在该界面中输入SQL语句操作全文检索引擎Solr。
GPText Lib(Greenplum全文检索库):用于向全文检索引擎Solr提供底层实现。通过GPText Lib可以调用Solr CLI(Solr命令行)或者本地函数。
Solr CLI:是全文检索引擎Solr对外提供的操作命令。
Native Call(调用本地函数):是指调用者和被调用者在同一个内存空间。
GPDB(Greenplum Database):Greenplum数据库。
Solr Cloud:基于Solr订制的分布式全文检索引擎。
相关技术中,如图1所示,全文检索系统通过GPText User Interface获取索引操作,并将获取的索引操作发送给GPText Lib。如果索引操作为查询索引操作,则由GPTextLib调用Solr CLI或者Native Call将查询索引操作发送给Solr,Solr执行查询索引操作。如果索引操作为非查询索引操作,则由GPText Lib调用Solr CLI或者Native Call将非查询索引操作发送给Solr,并内部调用Greenplum中的Segment节点向Solr中的Solr Shard传入索引值,Solr执行非查询索引操作。
但是,如图1所示,全文检索引擎Solr与数据库Greenplum耦合度高,全文检索系统无法更新全文检索引擎Solr,也无法将全文检索引擎Solr更换为其它类型的全文检索引擎。此外,全文检索引擎Solr与数据库Greenplum之间的数据交互过程不透明,全文检索系统无法将全文检索引擎Solr移植到其它类型的数据库进行使用。数据库Greenplum对外的接口形式单一,不利于数据库Greenplum的再次开发。
图2示出根据本公开一实施例的全文检索系统的架构图。如图2所示:
DEText User Interface(用户自定义全文检索用户接口模块):用户自定义函数,用于向用户提供输入SQL语句的界面,用户可以通过在该界面中输入SQL语句操作全文检索引擎。
全文检索中间件:具有中间件接口,中间件接口为Java API(ApplicationProgramming Interface,应用程序编程接口)。通过中间件接口可以调用全文检索中间件。全文检索中间件用于解耦数据库和全文检索引擎。
Greenplum PLJava:用户自定义函数,Greenplum中用于将SQL语句转换成Java语句,并调用中间件接口的模块。
JDBC(Java DataBase Connectivity,Java数据库连接):一种能够执行SQL语句的接口,JDBC为Java API。JDBC可以为多种类型的数据库提供统一访问接口。例如,JDBC可以为Greenplum、PostgreSQL和PostgreSQL-XC3类型的数据库提供统一访问接口。
SolrJ(Solr Java API):全文检索引擎Solr对外提供的全文检索引擎接口,全文检索引擎接口为Java API。SolrJ是Java连接Solr进行查询检索和索引更新维护的JAR(Java Archive,Java归档文件)包,通过SolrJ可以调用全文检索引擎Solr。
Solr Cloud:基于Solr订制的分布式全文检索引擎。
图3示出根据本公开一实施例的全文检索系统的框图。如图3所示,全文检索系统包括用户接口模块31、数据库32、全文检索中间件33和全文检索引擎34。
其中,用户接口模块31,用于在获取到索引操作时,通过数据库32向全文检索中间件33发送索引操作;全文检索中间件33,用于在确定索引操作为查询索引操作时,向全文检索引擎34发送查询索引操作;全文检索引擎34,用于执行查询索引操作,得到查询结果。
其中,数据库32的类型可以为Greenplum、PostgreSQL或PostgreSQL-XC3等,全文检索引擎34的类型可以为Solr或者ES等,本公开对数据库的类型和全文检索引擎的类型均不作限制。
其中,索引操作可以包括查询索引操作和非查询索引操作。在本公开中,查询索引操作以外的其它索引操作均可以称为非查询索引操作。
作为一个示例,用户接口模块31为DEText User Interface,数据库32为Greenplum,全文检索引擎34为Solr。图4示出根据本公开一实施例的全文检索系统的框图。如图4所示,DEText User Interface在获取到索引操作时,向Greenplum发送索引操作。Greenplum通过调用中间件接口即中间件Java API,向全文检索中间件发送索引操作。全文检索中间件在确定索引操作为查询索引操作时,通过调用全文检索引擎接口即Solr JavaAPI,向Solr发送查询索引操作。Solr执行查询索引操作,得到查询结果。
在一种实现方式中,用户接口模块31,还用于在获取到索引操作时,向数据库32发送索引操作;数据库32,用于将索引操作转换为Java语句的索引操作,并通过调用中间件接口,向全文检索中间件33发送Java语句的索引操作。
在一种实现方式中,数据库32具有转换模块。转换模块用于将SQL语句的索引操作转换为Java语句的索引操作,并通过调用中间件接口向全文检索中间件33发送Java语句的索引操作。例如,转换模块可以为在数据库32中设置的PLJava。
作为一个示例,用户接口模块31为DEText User Interface,数据库32为Greenplum,转换模块为Greenplum PLJava,全文检索引擎34为Solr。图5示出根据本公开一实施例的全文检索系统的框图。如图5所示,DEText User Interface在获取到SQL语句的索引操作时,向Greenplum发送SQL语句的索引操作。Greenplum中的Greenplum PLJava将SQL语句的索引操作转换为Java语句的索引操作。Greenplum PLJava通过调用中间件接口即中间件Java API,向全文检索中间件发送Java语句的索引操作。后续执行过程在此不再赘述。
在一种实现方式中,全文检索中间件33,还用于在确定索引操作为非查询索引操作时,通过调用数据库接口从数据库32获取执行非查询索引操作所需的数据;还用于根据非查询索引操作和获取的数据,生成全文检索引擎输入文件,并通过调用全文检索引擎接口向全文检索引擎34发送全文检索引擎输入文件;全文检索引擎34,还用于接收全文检索引擎输入文件,并根据全文检索引擎输入文件,执行非查询索引操作,得到执行结果。
其中,执行结果可以包括执行成功或执行失败。
其中,全文检索引擎输入文件是指对执行非查询索引操作所需的数据进行处理(例如分词、去除标点、去除停词、单词转变等)之后得到的文件。例如,全文检索引擎为Solr,则全文检索引擎输入文件为Solr Input Document。
在一种实现方式中,非查询索引操作包括创建索引操作、导入索引数据操作、更新索引数据操作、添加索引列操作、删除索引列操作和删除索引操作中的一项或者多项。
需要说明的是,尽管以创建索引操作、导入索引数据操作、更新索引数据操作、添加索引列操作、删除索引列操作和删除索引操作作为示例介绍了非查询索引操作如上,但本领域技术人员能够理解,本公开应不限于此。本领域技术人员可以根据实际应用场景灵活设定非查询索引操作。
作为一个示例,用户接口模块31为DEText User Interface,数据库32为Greenplum,全文检索引擎34为Solr。图6示出根据本公开一实施例的全文检索系统的框图。如图6所示,DEText User Interface在获取到索引操作时,向Greenplum发送索引操作。Greenplum通过调用中间件接口即中间件Java API,向全文检索中间件发送索引操作。全文检索中间件在确定索引操作为非查询索引操作时,通过调用数据库接口即JDBC,从Greenplum获取执行非查询索引操作所需的数据。全文检索中间件根据非查询索引操作和获取的数据,生成全文检索引擎输入文件即Solr Input Document。全文检索中间件通过调用全文检索引擎接口即Solr Java API,向Solr发送全文检索引擎输入文件。Solr接收全文检索引擎输入文件,并根据全文检索引擎输入文件,执行非查询索引操作,得到执行结果。
在一种实现方式中,在非查询索引操作为导入索引数据操作、更新索引数据操作或添加索引列操作时,需要数据库32获取执行导入索引数据操作、更新索引数据操作或添加索引列操作所需的数据。
在一种实现方式中,数据库32,还用于在索引操作为导入索引数据操作时,将导入索引数据操作包括的各个第一数据列对应的数据确定为执行导入索引数据操作所需的数据。
在一种实现方式中,数据库32,还用于在索引操作为更新索引数据操作时,将更新索引数据操作包括的索引对应的各个第二数据列对应的增加或者减少的数据确定为执行更新索引数据操作所需的数据。
在一种实现方式中,数据库32,还用于在索引操作为添加索引列操作时,将添加索引列操作包括的各个第三数据列对应的数据确定为执行添加索引列操作所需的数据。
在一种实现方式中,全文检索引擎34,还用于通过全文检索引擎接口向全文检索中间件33发送查询结果或执行结果;全文检索中间件33,还用于接收查询结果或执行结果,并通过中间件接口向用户接口模块31发送查询结果或执行结果;用户接口模块31,还用于展示查询结果或执行结果。
本公开的全文检索系统,通过全文检索中间件能够实现全文检索引擎与数据库之间的解耦,从而能够实现对全文检索引擎进行更新或更换,也能够实现将全文检索引擎快速移植到其它数据库进行使用,扩大全文检索系统应用的范围,提高全文检索系统开发的便捷性。
示例一:
作为一个示例,用户接口模块31为DEText User Interface,数据库32为Greenplum,转换模块为Greenplum PLJava,全文检索引擎34为Solr。
如图2所示,DEText User Interface在获取到SQL语句的索引操作时,向Greenplum发送SQL语句的索引操作。Greenplum中的Greenplum PLJava将SQL语句的索引操作转换为Java语句的索引操作。Greenplum PLJava通过调用中间件接口即中间件JavaAPI,向全文检索中间件发送Java语句的索引操作。
如图2所示,全文检索中间件在确定索引操作为查询索引操作时,通过调用全文检索引擎接口即Solr Java API,向Solr发送查询索引操作。Solr执行查询索引操作,得到查询结果。Solr通过全文检索引擎接口向全文检索中间件发送查询结果。全文检索中间件接收查询结果,通过中间件接口向DEText User Interface发送查询结果。DEText UserInterface展示查询结果。
如图2所示,全文检索中间件在确定索引操作为非查询索引操作时,通过调用数据库接口即JDBC,从Greenplum获取执行非查询索引操作所需的数据。全文检索中间件根据非查询索引操作和获取的数据,生成全文检索引擎输入文件即Solr Input Document。全文检索中间件通过调用全文检索引擎接口即Solr Java API,向Solr发送全文检索引擎输入文件。Solr接收全文检索引擎输入文件,并根据全文检索引擎输入文件,执行非查询索引操作,得到执行结果。Solr通过全文检索引擎接口向全文检索中间件发送执行结果。全文检索中间件接收执行结果,通过中间件接口向DEText User Interface发送执行结果。DETextUser Interface展示执行结果。
示例二:
作为一个示例,数据库名为detext,数据库detext包括表,表名为mobile。表1示出根据本公开一实施例的数据库detext中的表mobile。如表1所示,表mobile包括数据列:编号id、供应商vendor、型号model、价格price和详情描述description。其中,表mobile的主键为编号id。
表1
编号id | 供应商vendor | 型号model | 价格price | 详情描述description |
1 | a | r1 | 2499 | cpu:super180;memory:4G;storage:64G |
2 | a | r2 | 3299 | cpu:super190;memory:6G;storage:128G |
3 | c | s1 | 3999 | cpu:super160;memory:6G;storage:128G |
4 | d | p1 | 2699 | cpu:strong960;memory:6G;storage:64G |
客户端通过SSH(Secure Shell,安全外壳协议)连接数据库Greenplum的Master节点,将默认Root账户切换到MPP(Massively Parallel Processor,大规模并行处理)的管理员帐户。客户端登录数据库detext,并初始全文检索服务。
创建索引,入参即索引的名称为“数据库名.表名”。例如,创建索引的操作命令select detext.create_index(‘detext.mobile’),即创建索引detext.mobile。
导入索引数据操作,选择表中任意数据列(主键必选)名称以逗号分隔。例如,导入索引数据的操作命令select detext.commit_index(‘detext.mobile’,‘id,model,price’),如表2所示,即将表1中数据列编号id、型号model和价格price导入到索引detext.mobile。
表2
编号id | 型号model | 价格price |
1 | r1 | 2499 |
2 | r2 | 3299 |
3 | s1 | 3999 |
4 | p1 | 2699 |
例如,查询索引的操作命令select detext.search(‘detext.mobile’,’r’),即通过索引detext.mobile查询与r相关的信息,得到的查询结果为{id:1,model:r1,price:2499}、{id:2,model:r2,price:3299}。
表3示出根据本公开一实施例的数据库detext中的表mobile。如表3所示,将表3相比于表1,确定表mobile增加数据{id:5,vendor:e,model:r3,price:1499,description:cpu:super140;memory:4G;storage:32G}。例如,更新索引数据的操作命令selectdetext.update_index(‘detext.mobile’),如表4所示,即将表3相比于表1增加的数据{id:5,model:r3,price:1499}同步到索引detext.mobile。
表3
编号id | 供应商vendor | 型号model | 价格price | 详情描述description |
1 | a | r1 | 2499 | cpu:super180;memory:4G;storage:64G |
2 | a | r2 | 3299 | cpu:super190;memory:6G;storage:128G |
3 | c | s1 | 3999 | cpu:super160;memory:6G;storage:128G |
4 | d | p1 | 2699 | cpu:strong960;memory:6G;storage:64G |
5 | e | r3 | 1499 | cpu:super140;memory:4G;storage:32G |
表4
编号id | 型号model | 价格price |
5 | r3 | 1499 |
例如,查询索引的操作命令select detext.search(‘detext.mobile’,’r’),即通过索引detext.mobile查询与r相关的信息,得到的查询结果为{id:1,model:r1,price:2499}、{id:2,model:r2,price:3299}、{id:5,model:r3,price:1499}。
添加索引列,选择表中任意数据列名称以逗号分隔。例如,添加索引列的操作命令select detext.add_column(‘detext.mobile’,‘vendor’),如表5所示,即将表3中数据列vendor添加到索引detext.mobile。
表5
供应商vendor |
a |
a |
c |
d |
e |
例如,查询索引的操作命令select detext.search(‘detext.mobile’,’r’),即通过索引detext.mobile查询与r相关的信息,得到的查询结果为{id:1,vendor:a,model:r1,price:2499}、{id:2,vendor:a,model:r2,price:3299}、{id:5,vendor:e,model:r3,price:1499}。
删除索引列,选择表中任意数据列名称以逗号分隔。例如,删除索引列的操作命令select detext.remove_column(‘detext.mobile’,‘price’),如表6所示,即将已导入到索引detext.mobile的表3中数据列price删除。
表6
价格price |
2499 |
3299 |
3999 |
2699 |
1499 |
例如,查询索引的操作命令select detext.search(‘detext.mobile’,’r’),即通过索引detext.mobile查询与r相关的信息,得到的查询结果为{id:1,vendor:a,model:r1}、{id:2,vendor:a,model:r2}、{id:5,vendor:e,model:r3}。
删除索引,入参即索引的名称为“数据库名.表名”。例如,删除索引的操作命令select detext.delete_index(‘detext.mobile’),即删除索引detext.mobile。
图7示出根据本公开一实施例的全文检索方法的流程图。该方法应用于全文检索系统中的全文检索中间件。如图7所示,该方法包括步骤S71和步骤S72。
在步骤S71中,接收数据库发送的索引操作。
在步骤S72中,在确定索引操作为查询索引操作时,向全文检索引擎发送查询索引操作,以使全文检索引擎执行查询索引操作,得到查询结果。
在一种实现方式中,该方法还包括:在接收到全文检索引擎发送的查询结果时,通过中间件接口向用户接口模块发送查询结果,以使用户接口模块展示查询结果。
图8示出根据本公开一实施例的全文检索方法的流程图。该方法应用于全文检索系统中的全文检索中间件。如图8所示,该方法包括步骤S81至步骤S83。
在步骤S81中,接收数据库发送的索引操作。
在步骤S82中,在确定索引操作为非查询索引操作时,通过调用数据库接口从数据库获取执行非查询索引操作所需的数据。
在步骤S83中,根据非查询索引操作和获取的数据,生成全文检索引擎输入文件,并通过调用全文检索引擎接口向全文检索引擎发送全文检索引擎输入文件,以使全文检索引擎根据全文检索引擎输入文件,执行非查询索引操作,得到执行结果。
在一种实现方式中,该方法还包括:在接收到全文检索引擎发送的执行结果时,通过中间件接口向用户接口模块发送执行结果,以使用户接口模块展示执行结果。
在一种实现方式中,非查询索引操作包括创建索引操作、导入索引数据操作、更新索引数据操作、添加索引列操作、删除索引列操作和删除索引操作中的一项或者多项。
本公开的全文检索方法,通过全文检索中间件能够实现全文检索引擎与数据库之间的解耦,从而能够实现对全文检索引擎进行更新或更换,也能够实现将全文检索引擎快速移植到其它数据库进行使用,扩大全文检索系统应用的范围,提高全文检索系统开发的便捷性。
图9示出根据本公开一实施例的全文检索中间件的框图。参照图9,该全文检索中间件900可包括处理器901、存储有机器可执行指令的机器可读存储介质902。处理器901与机器可读存储介质902可经由系统总线903通信。并且,处理器901通过读取机器可读存储介质902中与全文检索逻辑对应的机器可执行指令以执行上文所述的全文检索方法。
本文中提到的机器可读存储介质902可以是任何电子、磁性、光学或者其它物理存储装置,可以包含或者存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
以上已描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或者对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (12)
1.一种全文检索系统,其特征在于,所述全文检索系统包括用户接口模块、数据库、全文检索中间件和全文检索引擎,其中:
所述用户接口模块,用于在获取到索引操作时,通过所述数据库向所述全文检索中间件发送所述索引操作;
所述全文检索中间件,用于在确定所述索引操作为查询索引操作时,向所述全文检索引擎发送所述查询索引操作;
所述全文检索引擎,用于执行所述查询索引操作,得到查询结果。
2.根据权利要求1所述的系统,其特征在于,
所述用户接口模块,还用于在获取到索引操作时,向所述数据库发送所述索引操作;
所述数据库,用于将所述索引操作转换为Java语句的索引操作,并通过调用中间件接口,向所述全文检索中间件发送所述Java语句的索引操作。
3.根据权利要求1所述的系统,其特征在于,
所述全文检索中间件,还用于在确定所述索引操作为非查询索引操作时,通过调用数据库接口从所述数据库获取执行所述非查询索引操作所需的数据;还用于根据所述非查询索引操作和获取的所述数据,生成全文检索引擎输入文件,并通过调用全文检索引擎接口向所述全文检索引擎发送所述全文检索引擎输入文件;
所述全文检索引擎,还用于接收所述全文检索引擎输入文件,并根据所述全文检索引擎输入文件,执行所述非查询索引操作,得到执行结果。
4.根据权利要求3所述的系统,其特征在于,
所述全文检索引擎,还用于通过全文检索引擎接口向所述全文检索中间件发送所述查询结果或所述执行结果;
所述全文检索中间件,还用于接收所述查询结果或所述执行结果,并通过中间件接口向所述用户接口模块发送所述查询结果或所述执行结果;
所述用户接口模块,还用于展示所述查询结果或所述执行结果。
5.根据权利要求3所述的系统,其特征在于,所述非查询索引操作包括创建索引操作、导入索引数据操作、更新索引数据操作、添加索引列操作、删除索引列操作和删除索引操作中的一项或者多项。
6.根据权利要求3所述的系统,其特征在于,
所述数据库,还用于在所述索引操作为导入索引数据操作时,将所述导入索引数据操作包括的各个第一数据列对应的数据确定为执行所述导入索引数据操作所需的数据。
7.根据权利要求2所述的系统,其特征在于,
所述数据库,还用于在所述索引操作为更新索引数据操作时,将所述更新索引数据操作包括的索引对应的各个第二数据列对应的增加或者减少的数据确定为执行所述更新索引数据操作所需的数据。
8.根据权利要求2所述的系统,其特征在于,
所述数据库,还用于在所述索引操作为添加索引列操作时,将所述添加索引列操作包括的各个第三数据列对应的数据确定为执行所述添加索引列操作所需的数据。
9.一种全文检索方法,其特征在于,应用于全文检索系统中的全文检索中间件,所述方法包括:
接收数据库发送的索引操作;
在确定所述索引操作为查询索引操作时,向全文检索引擎发送所述查询索引操作,以使所述全文检索引擎执行所述查询索引操作,得到查询结果。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
在确定所述索引操作为非查询索引操作时,通过调用数据库接口从所述数据库获取执行所述非查询索引操作所需的数据;
根据所述非查询索引操作和获取的所述数据,生成全文检索引擎输入文件,并通过调用全文检索引擎接口向所述全文检索引擎发送所述全文检索引擎输入文件,以使所述全文检索引擎根据所述全文检索引擎输入文件,执行所述非查询索引操作,得到执行结果。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
在接收到所述全文检索引擎发送的所述查询结果或所述执行结果时,通过中间件接口向用户接口模块发送所述查询结果或所述执行结果,以使所述用户接口模块展示所述查询结果或所述执行结果。
12.根据权利要求10所述的方法,其特征在于,所述非查询索引操作包括创建索引操作、导入索引数据操作、更新索引数据操作、添加索引列操作、删除索引列操作和删除索引操作中的一项或者多项。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810699871.5A CN108959538B (zh) | 2018-06-29 | 2018-06-29 | 全文检索系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810699871.5A CN108959538B (zh) | 2018-06-29 | 2018-06-29 | 全文检索系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108959538A true CN108959538A (zh) | 2018-12-07 |
CN108959538B CN108959538B (zh) | 2021-03-02 |
Family
ID=64484669
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810699871.5A Active CN108959538B (zh) | 2018-06-29 | 2018-06-29 | 全文检索系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108959538B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110704645A (zh) * | 2019-08-22 | 2020-01-17 | 中国人民解放军军事科学院评估论证研究中心 | 一种基于指纹的语料库全文检索方法及系统 |
CN111695001A (zh) * | 2020-06-17 | 2020-09-22 | 科技谷(厦门)信息技术有限公司 | 一种大数据场景下的混合数据管理系统 |
CN111966720A (zh) * | 2020-07-30 | 2020-11-20 | 上海泛微网络科技股份有限公司 | 一种数据处理方法及相关设备 |
CN112182015A (zh) * | 2020-09-28 | 2021-01-05 | 贵州云腾志远科技发展有限公司 | 一种自适应的全局数据快速检索方法 |
CN112612805A (zh) * | 2020-12-24 | 2021-04-06 | 北京浪潮数据技术有限公司 | 一种hbase数据索引到查询引擎的方法和相关装置 |
CN112800287A (zh) * | 2021-04-15 | 2021-05-14 | 杭州欧若数网科技有限公司 | 基于图数据库的全文索引方法和系统 |
CN114116866A (zh) * | 2021-11-22 | 2022-03-01 | 广州新科佳都科技有限公司 | 一种数据获取方法、装置、终端设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102426589A (zh) * | 2011-10-31 | 2012-04-25 | 合一网络技术(北京)有限公司 | 一种用于数据库信息检索的中间层系统及信息检索方法 |
US20130238593A1 (en) * | 2012-03-12 | 2013-09-12 | Oracle International Corporation | System and method for supporting agile development in an enterprise crawl and search framework environment |
CN103412933A (zh) * | 2013-08-20 | 2013-11-27 | 南京物联网应用研究院有限公司 | 一种云搜索平台 |
CN106951419A (zh) * | 2016-01-06 | 2017-07-14 | 北京仿真中心 | 一种面向云制造的异构制造服务发现系统及方法 |
-
2018
- 2018-06-29 CN CN201810699871.5A patent/CN108959538B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102426589A (zh) * | 2011-10-31 | 2012-04-25 | 合一网络技术(北京)有限公司 | 一种用于数据库信息检索的中间层系统及信息检索方法 |
US20130238593A1 (en) * | 2012-03-12 | 2013-09-12 | Oracle International Corporation | System and method for supporting agile development in an enterprise crawl and search framework environment |
CN103412933A (zh) * | 2013-08-20 | 2013-11-27 | 南京物联网应用研究院有限公司 | 一种云搜索平台 |
CN106951419A (zh) * | 2016-01-06 | 2017-07-14 | 北京仿真中心 | 一种面向云制造的异构制造服务发现系统及方法 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110704645A (zh) * | 2019-08-22 | 2020-01-17 | 中国人民解放军军事科学院评估论证研究中心 | 一种基于指纹的语料库全文检索方法及系统 |
CN110704645B (zh) * | 2019-08-22 | 2020-12-22 | 中国人民解放军军事科学院评估论证研究中心 | 一种基于指纹的语料库全文检索方法及系统 |
CN111695001A (zh) * | 2020-06-17 | 2020-09-22 | 科技谷(厦门)信息技术有限公司 | 一种大数据场景下的混合数据管理系统 |
CN111695001B (zh) * | 2020-06-17 | 2023-05-30 | 科技谷(厦门)信息技术有限公司 | 一种大数据场景下的混合数据管理系统 |
CN111966720A (zh) * | 2020-07-30 | 2020-11-20 | 上海泛微网络科技股份有限公司 | 一种数据处理方法及相关设备 |
CN112182015A (zh) * | 2020-09-28 | 2021-01-05 | 贵州云腾志远科技发展有限公司 | 一种自适应的全局数据快速检索方法 |
CN112182015B (zh) * | 2020-09-28 | 2023-07-21 | 贵州云腾志远科技发展有限公司 | 一种自适应的全局数据快速检索方法 |
CN112612805A (zh) * | 2020-12-24 | 2021-04-06 | 北京浪潮数据技术有限公司 | 一种hbase数据索引到查询引擎的方法和相关装置 |
CN112612805B (zh) * | 2020-12-24 | 2023-12-22 | 北京浪潮数据技术有限公司 | 一种hbase数据索引到查询引擎的方法和相关装置 |
CN112800287A (zh) * | 2021-04-15 | 2021-05-14 | 杭州欧若数网科技有限公司 | 基于图数据库的全文索引方法和系统 |
CN114116866A (zh) * | 2021-11-22 | 2022-03-01 | 广州新科佳都科技有限公司 | 一种数据获取方法、装置、终端设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108959538B (zh) | 2021-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108959538A (zh) | 全文检索系统及方法 | |
CN109299102B (zh) | 一种基于Elastcisearch的HBase二级索引系统及方法 | |
JP6617117B2 (ja) | 半構造データのためのスケーラブルな分析プラットフォーム | |
CN106227800B (zh) | 一种高度关联大数据的存储方法及管理系统 | |
Nayak et al. | Type of NOSQL databases and its comparison with relational databases | |
CN102521416B (zh) | 数据关联查询方法和数据关联查询装置 | |
KR102177190B1 (ko) | 유연한 스키마를 사용한 데이터 관리 | |
US10733172B2 (en) | Method and computing device for minimizing accesses to data storage in conjunction with maintaining a B-tree | |
US10346399B2 (en) | Searching relational and graph databases | |
US9229961B2 (en) | Database management delete efficiency | |
US10970300B2 (en) | Supporting multi-tenancy in a federated data management system | |
US11036732B2 (en) | Subquery predicate generation to reduce processing in a multi-table join | |
CN105760418B (zh) | 用于对关系数据库表进行交叉列搜索的方法和系统 | |
US11386063B2 (en) | Data edge platform for improved storage and analytics | |
WO2019015364A1 (zh) | 执行结构化查询语言sql指令的方法和装置 | |
CN102541631A (zh) | 以多线程不同驱动源执行计划处理查询的方法和系统 | |
US10372736B2 (en) | Generating and implementing local search engines over large databases | |
US10528538B2 (en) | Leveraging SQL with user defined aggregation to efficiently merge inverted indexes stored as tables | |
CN109753533A (zh) | 一种多源关系型数据库客户端开发方法及装置 | |
CN115563148A (zh) | 数据库查询方法和装置 | |
Gašpar et al. | Integrating Two Worlds: Relational and NoSQL | |
CN104239576A (zh) | 查找HBase表列值中所有行的方法和装置 | |
US11586604B2 (en) | In-memory data structure for data access | |
Koutroumanis et al. | Tearing down the tower of babel: Unified and efficient spatio-temporal queries for NoSQL stores | |
KR101477672B1 (ko) | 확장 가능한 분산 인덱스를 사용하여 데이터를 저장하는 장치 및 방법 |
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 |