CN106708996A - 用于对关系数据库进行全文搜索的方法及系统 - Google Patents
用于对关系数据库进行全文搜索的方法及系统 Download PDFInfo
- Publication number
- CN106708996A CN106708996A CN201611178403.0A CN201611178403A CN106708996A CN 106708996 A CN106708996 A CN 106708996A CN 201611178403 A CN201611178403 A CN 201611178403A CN 106708996 A CN106708996 A CN 106708996A
- Authority
- CN
- China
- Prior art keywords
- search
- participle
- relational database
- index
- 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
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/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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- 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
-
- 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/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
- G06F16/3344—Query execution using natural language analysis
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开一种用于对关系数据库进行全文搜索的方法及系统。该方法包括:将关系数据库的数据导入到非关系型数据库与索引服务器中;封装所述关系数据库的所述数据,生成索引请求;以及将所述索引请求按照预定Mapping存储结构索引到所述索引服务器中,所述预定Mapping存储结构包括:分词域、不分词域以及info域。本申请的用于对关系数据库进行全文搜索的方法及系统,能够在不使用语言分词器地情况下,使得搜索的准确性和全面性都能满足用户的搜索要求。
Description
技术领域
本发明涉及数据搜索领域,具体而言,涉及一种用于对关系数据库进行全文搜索的方法及系统。
背景技术
全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。全文搜索的实现技术各种各样,最原始的就是顺序查找,这种搜索技术简单,但时间复杂度为O(n)。全文检索的一般过程可例如:1:获取文档2:进行分词,创建索引3:索引存贮,以备后用4:用户输入查找5:分析用户输入,进行分词6:搜索索引,返回相关文档7:对返回的文档进行评分,进行排序8:返回搜索到的文档。
关系数据库,是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据,同时也是一个被组织成一组拥有正式描述性的表格,该形式的表格作用的实质是装载着数据项的特殊收集体,这些表格中的数据能以许多不同的方式被存取或重新召集而不需要重新组织数据库表格。关系数据库添加了索引功能,使得关系数据库的搜索相对快捷。关系数据库常见的搜索方法是,对关系数据库先建立索引再进行搜索,
在将关系数据库中数据进行全文索引过程中,非常常见地的场景是,用户需要将来自不同国家的成千上万个关系表导入到索引数据库中,由于数据表的个数非常多,不适宜对每个关系数据库表都建立一个索引,并且由于索引承载数据量存在限制,无法使用单个索引存储所有数据,为了保持索引逻辑地的完整性,要将结构化数据和非结构化数据分开索引;由于数据来自在不同国家,使用不同的语言,甚至每个数据域混杂不同语言的数据,不适宜使用特定的分词器对导入的数据进行分词。
因此,需要一种新的用于对关系数据库进行全文搜索的方法及系统。
在所述背景技术部分公开的上述信息仅用于加强对本发明的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
有鉴于此,本发明提供一种用于对关系数据库进行全文搜索的方法及系统,能够在不使用语言分词器地情况下,使得搜索的准确性和全面性都能满足用户的搜索要求。
本发明的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本发明的实践而习得。
根据本发明的一方面,提出一种用于对关系数据库进行全文搜索的方法,该方法包括:将关系数据库的数据导入到非关系型数据库与索引服务器中;封装所述关系数据库的所述数据,生成索引请求;以及将索引请求按照预定Mapping存储结构索引到索引服务器中,预定Mapping存储结构包括:分词域、不分词域以及info域。
在本公开的一种示例性实施例中,分词域Mapping存储结构用于进行分词搜索;不分词域Mapping存储结构用于进行不分词搜索。
在本公开的一种示例性实施例中,上述方法用于在不确定语言环境下对所述关系数据库进行全文搜索。
在本公开的一种示例性实施例中,将关系数据库的数据导入到非关系型数据库与索引服务器中,包括:将所述关系数据库的所述数据通过Kafka组件,导入到所述非关系型数据库与所述索引服务器中。
在本公开的一种示例性实施例中,所述索引服务器通过redis访问非关系型数据库中的数据。
在本公开的一种示例性实施例中,还包括:将所述关系数据库类型的所述数据,处理为对应的索引类型的数据。
在本公开的一种示例性实施例中,所述索引类型包括:文本类型、日期类型、整型、单精度浮点型、双精度浮点型以及大整型。
在本公开的一种示例性实施例中,还包括:当所述索引的分片中文档数量大于一预定数值时,添加具有相同别名的索引。
在本公开的一种示例性实施例中,所述非关系型数据库为Cassandra数据库,所述索引服务器为Elasticsearch服务器。
根据本发明的一方面,提出一种用于对关系数据库进行全文搜索的方法,该方法包括:获取搜索关键字和搜索参数,所述搜索参数包括:分词、不分词或者连续;将所述搜索关键字和所述搜索参数发送至索引服务器;以及获取来自所述索引服务器的返回结果。
根据本发明的一方面,提出一种用于对关系数据库进行全文搜索的方法,该方法包括:接收搜索关键字和搜索参数,所述搜索参数包括分词、不分词或者连续;封装所述搜索关键字和所述搜索参数,以生成搜索请求;通过索引服务器处理所述搜索请求,以生成查询结果。
在本公开的一种示例性实施例中,通过索引服务器处理所述搜索请求,包括:通过索引服务器,处理不限定搜索域的所述搜索请求;以及通过索引服务器,处理限定搜索域的所述搜索请求。
在本公开的一种示例性实施例中,通过索引服务器处理搜索请求,还包括:在搜索参数为分词时,在分词域中处理搜索请求;在搜索参数为不分词时,在不分词域处理搜索请求。
根据本发明的一方面,提出一种用于对关系数据库进行全文搜索的系统,包括:输入模块,用于获取搜索关键字和搜索参数,所述搜索参数包括分词、不分词或者连续;发送模块,用于将所述搜索关键字和所述搜索参数发送至索引服务器;以及结果模块,用于获取来自所述索引服务器的返回结果。
根据本发明的一方面,提出一种用于对关系数据库进行全文搜索的系统,包括:接收模块,用于接收搜索关键字和搜索参数,所述搜索参数包括分词、不分词或者连续;封装模块,用于封装所述搜索关键字和所述搜索参数,以生成搜索请求;查询模块,用于通过索引服务器处理所述搜索请求,以生成查询结果。
根据本发明的用于对关系数据库进行全文搜索的方法及系统,能够在不使用语言分词器地情况下,使得搜索的准确性和全面性都能满足用户的搜索要求。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本发明。
附图说明
通过参照附图详细描述其示例实施例,本发明的上述和其它目标、特征及优点将变得更加显而易见。下面描述的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据一示例性实施例示出的一种用于对关系数据库进行全文搜索的方法的流程图。
图2是根据另一示例性实施例示出的一种用于对关系数据库进行全文搜索的方法的流程图。
图3是根据另一示例性实施例示出的一种用于对关系数据库进行全文搜索的方法的流程图。
图4是根据另一示例性实施例示出的一种用于对关系数据库进行全文搜索的方法的整体框架图。
图5是根据另一示例性实施例示出的一种用于对关系数据库进行全文搜索的方法的流程图。
图6是根据一示例性实施例示出的一种用于对关系数据库进行全文搜索的系统的框图。
图7是根据另一示例性实施例示出的一种用于对关系数据库进行全文搜索的系统的框图。
具体实施例
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本发明将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应理解,虽然本文中可能使用术语第一、第二、第三等来描述各种组件,但这些组件不应受这些术语限制。这些术语乃用以区分一组件与另一组件。因此,下文论述的第一组件可称为第二组件而不偏离本公开概念的教示。如本文中所使用,术语「及/或」包括相关联的列出项目中的任一个及一或多者的所有组合。
本领域技术人员可以理解,附图只是示例实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的,因此不能用于限制本发明的保护范围。
图1是根据一示例性实施例示出的一种用于对关系数据库进行全文搜索的方法的流程图。
如图1所示,在S102中,将关系数据库的数据导入到非关系型数据库与索引服务器中。可例如,关系数据库的数据通过Kafka组件,导入到非关系型数据库与索引服务器中,其中,非关系型数据库可例如为:Cassandra。索引服务器可例如:Elasticsearch。Cassandra存储所有数据包括元数据和数据本身,Elasticsearch存储可索引数据。
在S104中,封装所述关系数据库的所述数据,生成索引请求。数据封装,笼统地讲,就是把业务数据映射到某个封装协议的净荷中,然后填充对应协议的包头,形成封装协议的数据包,并完成速率适配。
在S106中,将索引请求按照预定Mapping存储结构索引到索引服务器中,预定Mapping存储结构包括:分词域、不分词域以及info域。在搜索服务器中的索引包含两层概念;1、索引类似于如上文所述的关系数据库中数据库的概念,索引使用Mapping结构定义其中索引数据的类型和索引方式。2、索引同时是一个命名空间,索引中包含一个或多个主分片(primary shard),一个零个或多个副本分片(replica shard)
在本发明实施例中,在不使用分词器的情况下,从上层应用逻辑上提供了三个搜索参数,分别是分词、不分词、连续。为了达到对上述三种参数的支持,可例如,采用mapping存储方式,即在不使用分词器的情况下,通过提供额外的存储结构:分词域、不分词域、info域已达到对上述三种参数进行支持。分词域Mapping存储结构用于进行分词搜索;不分词域Mapping存储结构用于进行不分词搜索。还可例如,以及info域Mapping存储结构用于不限定搜索域时的不分词搜索;elasticsearch默认的_all域用于不限定搜索域时的分词搜索;同时使用elasticsearch查询语法实现连续搜索。本发明不以此为限。
对于任何关系表A(X,Y)定义如下mapping结构:
每个string类型的域都会被分词和不分词索引,例如在mapping结构中,"X"是分词域,"X|"是不分词域,可以用分词搜索和不分词搜索;其它类型的数据为了节省存储空间,只索引一次,但是会和string类型的不分词域一样被拷贝到info域中,info域主要用于在不指定搜索域时进行不分词搜索。
根据本发明的用于对关系数据库进行全文搜索的方法,通过将关系数据库中数据进行封装,生成索引请求并按照预定结构进行索引的方式,能够将关系数据库的数据转化成可全文搜索的数据。
应清楚地理解,本发明描述了如何形成和使用特定示例,但本发明的原理不限于这些示例的任何细节。相反,基于本发明公开的内容的教导,这些原理能够应用于许多其它实施例。
在本公开的一种示例性实施例中,上述方法用于在不确定语言环境下对关系数据库进行全文搜索。如上文所述,由于搜索数据可能来自不同国家,使用不同的语言,本发明实施例提供的方法适用于在上述不确定语言环境下使用。
在本公开的一种示例性实施例中,将关系数据库的数据导入到非关系型数据库与索引服务器中,包括:将所述关系数据库的所述数据通过Kafka组件,导入到所述非关系型数据库与所述索引服务器中。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。实际应用中,Kafka可以用来做消息队列、流式处理、日志聚合等。
在本公开的一种示例性实施例中,索引服务器通过redis访问非关系型数据库中的数据。Redis是一个开源,内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。
在本公开的一种示例性实施例中,还包括:将所述关系数据库类型的所述数据,处理为对应的索引类型的数据。在本发明实施例中,以Elasticsearch服务器中Mapping结构为例,对关系数据库与对应的索引类型进行示例性说明,可例如,在此mapping结构中,主要索引6种类型的数据,分别为文本类型、日期类型、整型、单精度浮点型、双精度浮点型、大整型。这六种索引类型和关系数据库中常见类型的映射关系如下,在关系数据库数据导入过程中,需要将关系数据库类型的数据处理对应可索引类型的数据后,进行索引。
关系数据库类型和Mapping中类型对照关系如下:
在本公开的一种示例性实施例中,还包括:当索引的分片中文档数量大于一预定数值时,添加具有相同别名的索引。分片用于Elasticsearch在集群中分配数据。分片被当作数据的容器,文档存储在分片中,然后分片分配给集群中的节点。当集群扩容或缩小,Elasticsearch将会自动在节点间迁移分片,以使集群保持平衡。
在本发明实施例中,当所述索引的分片中文档数量大于一预定数值时,添加具有相同别名的索引。为实现此功能,可例如,在本发明实施例中,索引具有如下基础结构:
{"mgobject(i)":{
"aliases":{"mgobjectforsearch":{}}
}}
其中,mgobjectforsearch是所有索引的别名,索引以前缀mgoject以及后缀标号i组成,i用来标识此索引是第i个索引。在服务器进行初始化时i=0,当索引mgobject(i)中存在分片其所包含的文档数量大于一预定数值时,可例如,设定预定数值为分片最大容量的60%,添加新的索引mgobject(i+1),本发明不以此为限。
根据本发明的用于对关系数据库进行全文搜索的方法,通过给索引中分片的别名加索引的方式,即解决了单个索引容量的问题,又带来了索引可扩充的优点。
在本公开的一种示例性实施例中,非关系型数据库为Cassandra数据库。Cassandra是一套开源分布式NoSQL数据库系统。Cassandra的系统架构是基于一致性哈希的完全P2P架构,每行数据通过哈希来决定应该存在哪个或哪些节点中。集群没有master的概念,所有节点都是同样的角色,彻底避免了整个系统的单点问题导致的不稳定性。
在本公开的一种示例性实施例中,索引服务器为Elasticsearch服务器。ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。
图2是根据另一示例性实施例示出的一种用于对关系数据库进行全文搜索的方法的流程图。
如图2所示,在S202中,获取搜索关键字和搜索参数,搜索参数包括分词、不分词或者连续。在本发明实施例中,在不使用分词器的情况下,从上层应用逻辑上提供了三个搜索参数,分别是分词、不分词、连续。分词是指对搜索关键词返回分词效果的命中结果;不分词是指对搜索关键词返回不分词效果的命中结果,被搜索文档的域中必须含有和搜索关键词相同的内容,才会作为命中文档返回;连续是指对搜索关系词返回分词连续的搜索结果,被搜索文档域中只要连续包含搜索关键词,就会作为命中文档返回。
在S204中,将所述搜索关键字和所述搜索参数发送至索引服务器。
在S206中,获取来自所述索引服务器的返回结果。
根据本发明的用于对关系数据库进行全文搜索的方法,通过在搜索时,分词、不分词和连续三种搜索参数的配合,可有效解决搜索全面性和准确性矛盾的问题。
图3是根据另一示例性实施例示出的一种用于对关系数据库进行全文搜索的方法的流程图。
如图3所示,在S302中,接收搜索关键字和搜索参数,搜索参数包括分词、不分词或者连续。
在S304中,封装的所述搜索关键字和所述搜索参数,以生成搜索请求。
在S306中,通过索引服务器处理所述搜索请求,以生成查询结果。通过索引服务器查找所述搜索请求,包括:通过索引服务器,查找不限定搜索域的所述搜索请求;以及通过索引服务器,查找限定搜索域的所述搜索请求。
在本公开的一种示例性实施例中,通过索引服务器处理搜索请求,还包括:在搜索参数为分词时,在分词域中处理搜索请求;在搜索参数为不分词时,在不分词域处理搜索请求;以及在搜索参数为连续时,在info域处理搜索请求。还可例如,使用elasticsearch搜索语法实现的连续搜索请求,本发明不以此为限。在本发明实施例中,数据的搜索分为不限定搜索域搜索和限定搜索域搜索,当不限定搜索域搜索时,如果使用不分词搜索,则实际搜索的域应该是info域,因为info域是所有不分词域的集合;如果使用分词或者连续搜索,实际搜索的域是_all域;但限定搜索域X进行搜索时,如果是不分词搜索,则实际搜索的域是"X|";而使用分词或者连续搜索时,实际搜索的域是"X"。
可例如,不限定搜索域搜索的情况下,搜索情况如下:
ANALYZED:"中国"---queryStringQuery("中国")
NOT_ANALYZED:"中国"---termQuery("info","中国")
CONTINUOUS:"中国"---queryStringQuery("\"中国\"")
限定搜索域搜索的情况下,搜索情况如下:
ANALYZED():"中国":"country"---queryStringQuery("中国").field("country")
NOT_ANALYZED():"中国":"country"---termQuery("country","中国")
CONTINUOUS():"中国":"country"---queryStringQuery("\"中国\"").field("country")
根据本发明的用于对关系数据库进行全文搜索的方法,通过设定搜索参数以及搜索域参数的方式,能够在不使用语言分词器的情况下,使得搜索的准确性和全面性都能达到用户的搜索要求。
图4是根据另一示例性实施例示出的一种用于对关系数据库进行全文搜索的方法的整体框架图。
如图所示,系统整体构架可例如为:查询语言402为GraphQL查询语言,非关系型数据库404为cassandra数据库,数据结构服务器406为redis结构服务器,索引服务器408为elasticsearch服务器,分布式消息系统410为Kafka组件,数据库412为MySql数据库,数据库414为SqlServer数据库,数据库416为Oracle数据库。该整体框架最下层的关系数据库数据通过Kafka组件,导入到cassandra数据库和elasticsearch中,cassandra存储所有数据包括元数据和数据本身,elasticsearch存储可索引数据,如果elasticsearch需要获取cassandra中存储的数据,可以通过redis加快访问速度;该整体框架的上层通过GraphQL为前端提供访问接口。
图5是根据另一示例性实施例示出的一种用于对关系数据库进行全文搜索的方法的流程图。
图5示例性说明了关系数据库数据可搜索化的一般过程,主要包括索引数据和查询数据两个方面。索引时,关系数据库数据被封装成索引请求,被索引到索引数据库当中;查询时,用户输入搜索关键字和搜索参数,并封装成搜索请求,从索引中查找数据,并产生查询结果返回给用户。
本领域技术人员可以理解实现上述实施例的全部或部分步骤被实现为由CPU执行的计算机程序。在该计算机程序被CPU执行时,执行本发明提供的上述方法所限定的上述功能。所述的程序可以存储于一种计算机可读存储介质中,该存储介质可以是只读存储器,磁盘或光盘等。
此外,需要注意的是,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。
图6是根据一示例性实施例示出的一种用于对关系数据库进行全文搜索的系统的框图。
其中,输入模块602用于获取搜索关键字和搜索参数,搜索参数包括分词、不分词或者连续。
发送模块604用于将搜索关键字和搜索参数发送至索引服务器。
结果模块606用于获取来自索引服务器的返回结果。
图7是根据另一示例性实施例示出的一种用于对关系数据库进行全文搜索的系统的框图。
接收模块702用于接收搜索关键字和搜索参数,搜索参数包括分词、不分词或者连续。
封装模块704用于封装的搜索关键字和搜索参数,以生成搜索请求。
查询模块706用于通过索引服务器处理搜索请求,以生成查询结果。
本领域技术人员可以理解上述各模块可以按照实施例的描述分布于装置中,也可以进行相应变化唯一不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本发明实施例的方法。
通过以上的详细描述,本领域的技术人员易于理解,根据本发明实施例的用于对关系数据库进行全文搜索的方法及系统具有以下优点中的一个或多个。
根据一些实施例,本发明的用于对关系数据库进行全文搜索的方法,通过将关系数据库中数据进行封装,生成索引请求并按照预定结构进行索引的方式,能够将关系数据库的数据转化成可全文搜索的数据。
根据另一些实施例,本发明的用于对关系数据库进行全文搜索的方法,通过给索引中分片的别名加索引的方式,即解决了单个索引容量的问题,又带来了索引可扩充的优点。
根据再一些实施例,本发明的用于对关系数据库进行全文搜索的方法,通过在搜索时,分词、不分词和连续三种搜索参数的配合,可有效解决搜索全面性和准确性矛盾的问题。
以上具体地示出和描述了本发明的示例性实施例。应可理解的是,本发明不限于这里描述的详细结构、设置方式或实现方法;相反,本发明意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。
此外,本说明书说明书附图所示出的结构、比例、大小等,均仅用以配合说明书所公开的内容,以供本领域技术人员了解与阅读,并非用以限定本公开可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本公开所能产生的技术效果及所能实现的目的下,均应仍落在本公开所公开的技术内容得能涵盖的范围内。同时,本说明书中所引用的如「上」、「第一」、「第二」及「一」等的用语,也仅为便于叙述的明了,而非用以限定本公开可实施的范围,其相对关系的改变或调整,在无实质变更技术内容下,当也视为本发明可实施的范畴。
Claims (15)
1.一种用于对关系数据库进行全文搜索的方法,其特征在于,包括:
将关系数据库的数据导入到非关系型数据库与索引服务器中;
封装所述关系数据库的所述数据,生成索引请求;以及
将所述索引请求按照预定Mapping存储结构索引到所述索引服务器中,所述预定Mapping存储结构包括:分词域、不分词域以及info域。
2.如权利要求1所述的方法,其特征在于,
所述分词域Mapping存储结构用于进行分词搜索;以及
所述不分词域Mapping存储结构用于进行不分词搜索。
3.如权利要求1所述的方法,其特征在于,所述方法用于在不确定语言环境下对所述关系数据库进行全文搜索。
4.如权利要求1所述的方法,其特征在于,将关系数据库的数据导入到非关系型数据库与索引服务器中,包括:
将所述关系数据库的所述数据通过Kafka组件,导入到所述非关系型数据库与所述索引服务器中。
5.如权利要求4所述的方法,其特征在于,所述索引服务器通过redis访问非关系型数据库中的数据。
6.如权利要求1所述的方法,其特征在于,还包括:
将所述关系数据库类型的所述数据,处理为对应的索引类型的数据。
7.如权利要求6所述的方法,其特征在于,所述索引类型包括:
文本类型、日期类型、整型、单精度浮点型、双精度浮点型以及大整型。
8.如权利要求1所述的方法,其特征在于,还包括:
当所述索引的分片中文档数量大于一预定数值时,添加具有相同别名的索引。
9.如权利要求1所述的方法,其特征在于,所述非关系型数据库为Cassandra数据库,所述索引服务器为Elasticsearch服务器。
10.一种用于对关系数据库进行全文搜索的方法,其特征在于,包括:
获取搜索关键字和搜索参数,所述搜索参数包括分词、不分词或者连续;
将所述搜索关键字和所述搜索参数发送至索引服务器;以及
获取来自所述索引服务器的返回结果。
11.一种用于对关系数据库进行全文搜索的方法,其特征在于,包括:
接收搜索关键字和搜索参数,所述搜索参数包括分词、不分词或者连续;
封装所述搜索关键字和所述搜索参数,以生成搜索请求;
通过索引服务器处理所述搜索请求,以生成查询结果。
12.如权利要求11所述的方法,其特征在于,通过索引服务器处理所述搜索请求,包括:
通过索引服务器,处理不限定搜索域的所述搜索请求;以及
通过索引服务器,处理限定搜索域的所述搜索请求。
13.如权利要求11所述的方法,其特征在于,通过索引服务器处理所述搜索请求,还包括:
在所述搜索参数为分词时,在分词域中处理所述搜索请求;以及
在所述搜索参数为不分词时,在不分词域处理所述搜索请求。
14.一种用于对关系数据库进行全文搜索的系统,其特征在于,包括:
输入模块,用于获取搜索关键字和搜索参数,所述搜索参数包括:分词、不分词或者连续;
发送模块,用于将所述搜索关键字和所述搜索参数发送至索引服务器;以及
结果模块,用于获取来自所述索引服务器的返回结果。
15.一种用于对关系数据库进行全文搜索的系统,其特征在于,包括:
接收模块,用于接收搜索关键字和搜索参数,所述搜索参数包括:分词、不分词或者连续;
封装模块,用于封装所述搜索关键字和所述搜索参数,以生成搜索请求;
查询模块,用于通过索引服务器处理所述搜索请求,以生成查询结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611178403.0A CN106708996B (zh) | 2016-12-19 | 2016-12-19 | 用于对关系数据库进行全文搜索的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611178403.0A CN106708996B (zh) | 2016-12-19 | 2016-12-19 | 用于对关系数据库进行全文搜索的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106708996A true CN106708996A (zh) | 2017-05-24 |
CN106708996B CN106708996B (zh) | 2020-09-25 |
Family
ID=58939187
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611178403.0A Active CN106708996B (zh) | 2016-12-19 | 2016-12-19 | 用于对关系数据库进行全文搜索的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106708996B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107247763A (zh) * | 2017-05-31 | 2017-10-13 | 北京凤凰理理它信息技术有限公司 | 业务数据统计方法、装置、系统、存储介质及电子设备 |
CN109558417A (zh) * | 2018-11-28 | 2019-04-02 | 亚信科技(南京)有限公司 | 一种数据处理方法和平台 |
CN109992196A (zh) * | 2017-12-29 | 2019-07-09 | 杭州海康威视数字技术股份有限公司 | 索引数据的存储方法及装置、存储系统 |
CN110110006A (zh) * | 2019-04-15 | 2019-08-09 | 平安普惠企业管理有限公司 | 数据管理方法及相关产品 |
CN110109948A (zh) * | 2019-04-25 | 2019-08-09 | 数译(成都)信息技术有限公司 | 数据查询方法、计算机设备及计算机可读存储介质 |
CN110134728A (zh) * | 2019-05-09 | 2019-08-16 | 浪潮软件集团有限公司 | 一种基于全文搜索提供地图空间数据的方法及系统 |
CN110413734A (zh) * | 2019-07-25 | 2019-11-05 | 万达信息股份有限公司 | 一种医疗服务的智能搜索系统及方法 |
CN110807038A (zh) * | 2019-09-18 | 2020-02-18 | 国网江苏省电力有限公司 | 一种基于Elasticsearch的CMDB信息全文检索方法 |
CN112182328A (zh) * | 2020-09-02 | 2021-01-05 | 北京三快在线科技有限公司 | 一种搜索引擎的扩容方法、装置、电子设备及存储介质 |
CN113032419A (zh) * | 2021-04-21 | 2021-06-25 | 上海微盟企业发展有限公司 | 一种多源数据聚合搜索方法、装置、设备及存储介质 |
CN116492690A (zh) * | 2023-04-13 | 2023-07-28 | 广州炫动信息科技有限公司 | 游戏数据处理方法、系统及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631912A (zh) * | 2013-11-28 | 2014-03-12 | 清华大学 | 一种利用非关系数据库存储海量工业设备监测数据的方法 |
CN105045852A (zh) * | 2015-07-06 | 2015-11-11 | 华东师范大学 | 一种教学资源的全文搜索引擎系统 |
CN106202514A (zh) * | 2016-07-21 | 2016-12-07 | 北京邮电大学 | 基于Agent的突发事件跨媒体信息的检索方法及系统 |
-
2016
- 2016-12-19 CN CN201611178403.0A patent/CN106708996B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103631912A (zh) * | 2013-11-28 | 2014-03-12 | 清华大学 | 一种利用非关系数据库存储海量工业设备监测数据的方法 |
CN105045852A (zh) * | 2015-07-06 | 2015-11-11 | 华东师范大学 | 一种教学资源的全文搜索引擎系统 |
CN106202514A (zh) * | 2016-07-21 | 2016-12-07 | 北京邮电大学 | 基于Agent的突发事件跨媒体信息的检索方法及系统 |
Non-Patent Citations (1)
Title |
---|
张建中等: ""基于ElasticSearch 的数字图书馆检索系统"", 《计算机与现代化》 * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107247763A (zh) * | 2017-05-31 | 2017-10-13 | 北京凤凰理理它信息技术有限公司 | 业务数据统计方法、装置、系统、存储介质及电子设备 |
CN109992196B (zh) * | 2017-12-29 | 2022-05-17 | 杭州海康威视数字技术股份有限公司 | 索引数据的存储方法及装置、存储系统 |
CN109992196A (zh) * | 2017-12-29 | 2019-07-09 | 杭州海康威视数字技术股份有限公司 | 索引数据的存储方法及装置、存储系统 |
CN109558417A (zh) * | 2018-11-28 | 2019-04-02 | 亚信科技(南京)有限公司 | 一种数据处理方法和平台 |
CN109558417B (zh) * | 2018-11-28 | 2023-08-08 | 亚信科技(南京)有限公司 | 一种数据处理方法和系统 |
CN110110006A (zh) * | 2019-04-15 | 2019-08-09 | 平安普惠企业管理有限公司 | 数据管理方法及相关产品 |
CN110109948A (zh) * | 2019-04-25 | 2019-08-09 | 数译(成都)信息技术有限公司 | 数据查询方法、计算机设备及计算机可读存储介质 |
CN110134728A (zh) * | 2019-05-09 | 2019-08-16 | 浪潮软件集团有限公司 | 一种基于全文搜索提供地图空间数据的方法及系统 |
CN110134728B (zh) * | 2019-05-09 | 2023-02-14 | 浪潮软件集团有限公司 | 一种基于全文搜索提供地图空间数据的方法及系统 |
CN110413734A (zh) * | 2019-07-25 | 2019-11-05 | 万达信息股份有限公司 | 一种医疗服务的智能搜索系统及方法 |
CN110413734B (zh) * | 2019-07-25 | 2023-02-17 | 万达信息股份有限公司 | 一种医疗服务的智能搜索系统及方法 |
CN110807038A (zh) * | 2019-09-18 | 2020-02-18 | 国网江苏省电力有限公司 | 一种基于Elasticsearch的CMDB信息全文检索方法 |
CN112182328A (zh) * | 2020-09-02 | 2021-01-05 | 北京三快在线科技有限公司 | 一种搜索引擎的扩容方法、装置、电子设备及存储介质 |
CN113032419A (zh) * | 2021-04-21 | 2021-06-25 | 上海微盟企业发展有限公司 | 一种多源数据聚合搜索方法、装置、设备及存储介质 |
CN116492690A (zh) * | 2023-04-13 | 2023-07-28 | 广州炫动信息科技有限公司 | 游戏数据处理方法、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106708996B (zh) | 2020-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106708996A (zh) | 用于对关系数据库进行全文搜索的方法及系统 | |
EP3602351B1 (en) | Apparatus and method for distributed query processing utilizing dynamically generated in-memory term maps | |
EP3839759B1 (en) | Handling semi-structured and unstructured data in a sharded database environment | |
US10545981B2 (en) | Virtual repository management | |
CN108509547B (zh) | 一种信息管理方法、信息管理系统及电子设备 | |
US10152607B2 (en) | Secure access to hierarchical documents in a sorted, distributed key/value data store | |
US9418101B2 (en) | Query optimization | |
CN112269792B (zh) | 数据查询方法、装置、设备及计算机可读存储介质 | |
US10452632B1 (en) | Multi-input SQL-MR | |
CN108897874B (zh) | 用于处理数据的方法和装置 | |
CN107943952A (zh) | 一种基于Spark框架进行全文检索的实现方法 | |
CN108509437A (zh) | 一种ElasticSearch查询加速方法 | |
CN104391908B (zh) | 一种图上基于局部敏感哈希的多关键字索引方法 | |
US11803550B2 (en) | Workload-aware column imprints | |
US20150120697A1 (en) | System and method for analysis of a database proxy | |
CN108140022B (zh) | 数据查询方法和数据库系统 | |
US20080168071A1 (en) | Storing Data in Predicted Formats | |
KR101955376B1 (ko) | 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치 | |
US11500862B2 (en) | Object relational mapping with a single database query | |
Mitreva et al. | NoSQL solutions to handle big data | |
CN109241196A (zh) | 数据查询方法及装置、设备 | |
CN111949649B (zh) | 一种动态本体存储系统、存储方法、数据查询方法 | |
CN105550240A (zh) | 一种推荐的方法及装置 | |
CN113157692A (zh) | 一种关系型内存数据库系统 | |
Wang et al. | HDSW: Semantic Sensor Network System Based on Hadoop |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |