[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

CN109885641B - 一种数据库中文全文检索的方法及系统 - Google Patents

一种数据库中文全文检索的方法及系统 Download PDF

Info

Publication number
CN109885641B
CN109885641B CN201910053622.3A CN201910053622A CN109885641B CN 109885641 B CN109885641 B CN 109885641B CN 201910053622 A CN201910053622 A CN 201910053622A CN 109885641 B CN109885641 B CN 109885641B
Authority
CN
China
Prior art keywords
text
binary
retrieved
index
database
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
Application number
CN201910053622.3A
Other languages
English (en)
Other versions
CN109885641A (zh
Inventor
卢健
姜瑞海
王硕
张龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Highgo Base Software Co ltd
Original Assignee
Highgo Base Software Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Highgo Base Software Co ltd filed Critical Highgo Base Software Co ltd
Priority to CN201910053622.3A priority Critical patent/CN109885641B/zh
Publication of CN109885641A publication Critical patent/CN109885641A/zh
Application granted granted Critical
Publication of CN109885641B publication Critical patent/CN109885641B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种数据库中文全文检索的方法及系统,所述方法包括以下步骤:接收待检索文本;对所述待检索文本每两个汉字为一组进行二元分词处理,得到多个二元词组,并插入数据表文件;为所述数据表文件创建倒排索引,所述倒排索引中包含每个所述二元词组的位置索引,用于在检索过程中写入相应词组在数据库中各文本数据中的位置信息,所述位置信息包括包含该词组的行,以及在该行中的位置;根据所述多个二元词组,在所述数据库中对所述待检索文本进行全文检索。本发明的检索方法无需构建字典,对新词的检索效果更好,且通过引入多级索引机制,检索效率更高。

Description

一种数据库中文全文检索的方法及系统
技术领域
本公开属于数据检索技术领域,尤其涉及一种数据库中文全文检索的方法及系统。
背景技术
全文检索技术是一种非常普遍的信息查询应用,网上的各类搜索引擎核心技术之一就是全文检索。全文检索的产品实质上就是一个内嵌全文检索技术的数据库产品。中文全文检索过程中会涉及到中文分词。
目前主要的中文分词主要可以分为:基于字符串匹配的分词方法和基于统计的分词方法。基于字符串匹配的分词方法需要将待分析的汉字串与一个词典中的词条进行匹配,若在词典中找到某个字符串,则认为识别出一个词,这种分词方法需要一个“足够完备”的词典,但由于网络新词更新非常快,词典的更新难以适应新词的更新速度。若待检索文本中包含了网络新词而词典中没有,就不能正确切分处理该词汇,从而就不能检索出包含该新词的文本,导致漏检。
基于统计的分词方法是文中借助字与字相邻共现的频率或概率进行分词,这种方法只需对语料中的字组频度进行统计,不需要词典,但这种方法经常抽出一些共现频度高、但并不是词的常用字组,对新词有一定的识别效果,但对常用词的识别精度差,并且运算耗时,分词产生的数据量也比较大,从而影响后续检索的效率。
在进行了分词的基础上,为了加快检索效率,数据库产品中常用倒排索引进行数据处理,具体的,数据库在接收要插入的数据文件后,首先读取该数据文件进行中文分词,分词后需要再读取一遍,获取每个词组在该数据文件中的位置写入倒排索引,即进行了两次数据文件读取,在数据文件大,或者插入数据库的数据量大的情况下,这种处理方式运算量大,且效率较低;并且,通用的倒排索引存储词语位置时,仅存储词组所在的行位置,在这种情况下,检索过程中统计词语的频率时,还需要再把数据读取出来,然后计算相似度,检索效率较低。
发明内容
为克服上述现有技术的不足,本公开提供了一种数据库中文全文检索的方法及系统,所述检索方法采用二元分词,能够更好的识别和检索网络新词,且对倒排索引进行了改进,通过多级索引的机制能够快速定位相应的词组,检索更为高效。
为实现上述目的,本公开的一个或多个实施例提供了如下技术方案:
一种数据库中文全文检索的方法,包括以下步骤:
接收待插入到数据库中的文本数据;
对所述文本数据每相邻两个汉字为一组进行二元分词处理,同时为所述文本数据创建倒排索引;
分词过程中,对于每个分词得到的二元词组,将所述二元词组和所述二元词组在该文本数据中的位置信息写入所述倒排索引;
接收待检索文本,并进行二元分词处理,得到多个待检索二元词组;
在所述数据库中,基于倒排索引和所述多个待检索二元词组执行全文检索。
进一步地,所述倒排索引包括三级索引,其中,一级索引用于标识各二元词组在二级索引中的位置,二级索引用于记录每个二元词组,以及所述文本在三级索引中的位置,三级索引用于记录二元词组在文本中的位置信息,所述位置信息包括二元词组在所述文本中的行,以及在该行中的位置。
进一步地,所述一级索引为编码;或
所述一级索引为字母或字母组合,对应多个以所述字母或字母组合标引的数据表文件。
进一步地,所述字母组合基于常用词汇的统计得到。
进一步地,所述基于倒排索引和所述多个待检索二元词组执行全文检索包括:
接收待检索文本,对所述待检索文本进行二元分词,得到多个待检索二元词组;
对于数据库中的每个文本数据,根据所述文本数据对应的倒排索引,按行统计所述多个待检索二元词组分别出现的频率;
根据所述频率计算待检索文本与所述文本数据每一行的相似度;
汇总待检索文本与该文本数据每一行的相似度,得到所述待检索文本与所述文本数据的相似度;
将数据库中的文本数据按相似度从高到低排序并输出。
一个或多个实施例提供了一种数据库中文全文检索的方法,包括以下步骤:
预先创建倒排索引结构;
接收待插入到数据库中的文本数据;
对所述文本数据每相邻两个汉字为一组进行二元分词处理;
分词过程中,对于每个分词得到的二元词组,将所述二元词组和所述二元词组在该文本数据中的位置信息写入所述倒排索引;
接收待检索文本,并进行二元分词处理,得到多个待检索二元词组;
在所述数据库中,基于倒排索引和所述多个待检索二元词组执行全文检索。
进一步地,所述倒排索引包括三级索引,其中,一级索引用于标识各二元词组在二级索引中的位置,二级索引用于记录每个二元词组,以及所述文本在三级索引中的位置,三级索引用于记录二元词组在文本中的位置信息,所述位置信息包括二元词组在所述文本中的行,以及在该行中的位置。
进一步地,所述一级索引为编码;或
所述一级索引为字母或字母组合,对应多个以所述字母或字母组合标引的数据表文件。
进一步地,所述字母组合基于常用词汇的统计得到。
进一步地,在所述数据库中对所述待检索文本进行全文检索包括:
所述基于倒排索引和所述多个待检索二元词组执行全文检索包括:
接收待检索文本,对所述待检索文本进行二元分词,得到多个待检索二元词组;
对于数据库中的每个文本数据,根据所述文本数据对应的倒排索引,按行统计所述多个待检索二元词组分别出现的频率;
根据所述频率计算待检索文本与所述文本数据每一行的相似度;
汇总待检索文本与该文本数据每一行的相似度,得到所述待检索文本与所述文本数据的相似度;
将数据库中的文本数据按相似度从高到低排序并输出。
一个或多个实施例提供了一种服务器,与数据库系统连接,执行所述数据库中文全文检索的方法。
一个或多个实施例提供了一种数据库中文全文检索系统,包括客户端、数据库系统和所述的服务器;所述客户端接收待检索文本并发送至服务器。
以上一个或多个技术方案存在以下有益效果:
本公开对于待检索的文本,基于通过二元分词进行拆分,可以尽可能的罗列出该文本中可能的所有词组,就避免了出现其他中文分词解决方案中的词典不全的问题,对于网络词语、新兴词语也能够很好的识别和检索;
本公开接收要插入到数据库的文本后,进行二元分词,同时创建该文本的倒排索引文件,分词过程中将当前拆分出的词组,以及该词组在文本中的位置写入倒排索引,这种边分词边写入索引文件的方式,相较于先进行分词,分词后再统计每个词组在文本中的位置的方式,节省了一次读取数据的过程,处理效率更高;
本公开对通用的倒排索引进行了改进,使其包含三级索引机制:编码/字母——词组——词组在包含该词组的文档中的位置,并且该位置信息细化为“词组所在行+词组在该行的位置”,在进行全文检索时,能够直接根据该位置信息快速统计待检索文本与数据库中文本每一行的相似度,从而快速计算全文相似度;
由于二元分词会带来存储数据量大,为了避免索引文件写入时以及后续执行检索时的跨文件写入和读取问题,本公开还基于常用词统计建立二级索引和相应的数据表文件,能够大大增加数据的读写速度,提高了数据库文本数据的处理效率以及检索效率。
附图说明
构成本公开的一部分的说明书附图用来提供对本公开的进一步理解,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。
图1为本公开实施例一中数据库中文全文检索方法的整体流程图;
图2为本公开实施例一中数据库中文全文检索方法的具体流程图;
图3为本公开实施例一中倒排索引的数据结构示意图;
图4为本公开实施例一中二级索引为字母的倒排索引示例图;
图5为本公开实施例二中数据库中文全文检索方法的整体流程图;
图6为本公开实施例二中数据库中文全文检索方法的具体流程图;
图7为本公开实施例三和四中数据库中文全文检索系统的框架图。
具体实施方式
应该指出,以下详细说明都是示例性的,旨在对本公开提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本公开所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本公开的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
实施例一
本实施例公开了一种数据库中文全文检索的方法,如图1所示,包括以下步骤:
接收待插入到数据库中的文本数据;
对所述文本数据每相邻两个汉字为一组进行二元分词处理,同时为所述文本数据创建倒排索引;
分词过程中,对于每个分词得到的二元词组,将所述二元词组和所述二元词组在该文本数据中的位置信息写入所述倒排索引;
接收待检索文本,并进行二元分词处理,得到多个待检索二元词组;
在所述数据库中,基于倒排索引和所述多个待检索二元词组执行全文检索。
具体地,如图2所示,所述方法包括向数据库插入新的文本数据过程1,以及针对接收的待检索文本执行全文检索的过程2。
所述向数据库插入新的文本数据过程1包括:
步骤101:接收要插入到数据库的文本数据;例如,输入“我在北京天安门”;
步骤102:对所述文本数据进行预处理;
其中,所述预处理包括去除非文字内容,例如空格,TAB,逗号等特殊符号。
步骤103:对预处理后的所述文本数据每相邻两个汉字为一组进行二元分词,同时为所述文本数据创建倒排索引;
例如:文本数据为“北京天安门”,进行二元分词后为“{“北京”,“京天”,“天安”,“安门”}”。
以Postgresql数据库为例,该数据库中只提供了对英文词语的分词,对中文词语的分词并不支持,Postgresql也可以借助外部插件的形式支持中文分词,目前已经存在的包括zhparser,jieba等插件可以支持中文分词,但是需要采用这些插件进行分词,并且需要借助自带的词典。但是,由于网络新词更新速度快,词典很容易漏掉新词,因而若基于词典执行分词,会出现漏掉关键词的问题导致检索效果欠佳。而通过二元分词可以最大程度上罗列出文本数据中可能的所有词组,本实施例通过采用二元分词方法进行分词,避免了使用词典,从而避免了词典中新词不全的问题。
进行二元分词的同时为所述文本数据创建倒排索引,所述倒排索引结构包括三级索引,其中,一级索引用于标识各二元词组在二级索引中的位置,二级索引用于记录每个二元词组,以及所述文本在三级索引中的位置,三级索引用于记录二元词组在文本中的位置信息。
一个或多个实施例中,所述倒排索引采用树形结构,优选地,本实施例中采用B-tree。
具体地,所述树形结构包括四级树结构。第一级树结构用于存储逻辑判断条件,判断各二元词组在第二级树结构中的位置。所述第一级树结构可对应一个文件,所述文件中存储逻辑判断条件。当采用文件存储该逻辑判断条件时,调取所述文件即可对其中的逻辑条件进行修改,灵活性高。所述第二级树结构对应于一级索引,用于标识各二元词组在二级索引中的位置;所述第三级树结构对应于二级索引,记录每个二元词组,以及所述文本在三级索引中的位置;所述第四级树结构对应于三级索引,记录相应二元词组的文本信息,以及所述二元词组在该文本中的位置信息。其中,所述第二级树结构和第三级树结构物理上可存储在同一个数据表文件中,也可存储在不同的数据表文件中。如图3所示,为四级树结构的示意图,为了清楚表达各级树结构之间的关系,需要说明的是,图中各级树结构的深度和广度仅为示例,可根据具体的数据进行扩展。
一个或多个实施例中,所述第二级树结构可采用十六进制编码。所述第二级树结构和第三级树结构物理上可存储在同一个数据表文件中,也可存储在不同的数据表文件中。
由于Postgresql数据库中磁盘存储和内存中的最小管理单位都是page,也是通常所说的block,一般PG页的大小为8K,这就决定了数据表文件的大小最大为1G。而由于本实施例所采用的分词方法为所有相邻两个汉字为一组的二元分词,其需要的存储量较大,需要多个数据表文件进行存储。基于此,一个或多个实施例中,对应二级索引的数据表文件创建有多个,且采用字母标引(例如,文件名中包含该字母),并采用字母作为一级索引。例如,若第三层某个结点对应二元词组“我在”,其父节点为“w”,将“我在”写入采用“w”标引的数据表文件中。通过采用字母标引索引文件,检索过程中以字母为入口能够快速定位到相应的词组及相应的三级索引,从而写入该词组在各文本数据中的位置信息。
本实施例通过采用二元分词虽然能够涵盖所有新词,但这种分词方法得到的词组相对于采用词典分词得到的词组数量更多,若26个字母分别作为一级索引,且对应26个数据表文件,那么在写入词组的位置信息过程中可能会面临频繁的跨文件写入,例如“天安门广场”,“天安”写入“t”对应的数据表文件,“安门”写入“a”对应的数据表文件,“门广”写入“m”对应的数据表文件,“广场”写入“g”对应的数据表文件,就加大了系统的运算负担。为了解决该问题,一个或多个实施例中,每个数据表文件采用多个字母的组合进行标引,例如“a-d”、“e-h”等。
优选地,所述多个字母的组合可以由不连续的字母组成,基于对现有词汇的统计分析设定字母的组合,识别常用词汇,将较为常用的词汇包含的字母设定为一组,例如,若“天安门广场”被判断为常用词汇,对应的二元词组的拼音首字母“t”、“a”、“m”、“g”可归为一组,写入同一个一级索引,且用于标引该一级索引对应的数据表文件。从而大大降低了跨表格写入数据的频率,降低了数据处理负担,而且,由于常用词汇所涉及的词组相应的索引均在同一个数据表文件中,提高了后续检索过程中查找的效率。
步骤104:分词过程中,对于每个分词得到的二元词组,将所述二元词组和所述二元词组在该文本数据中的位置信息写入所述倒排索引。
具体地,将每个二元词组根据一级索引分别写入二级索引,同时在各二元词组相应的三级索引中写入该二元词组在所述文本数据中的位置信息。
一个或多个实施例中,文本数据插入时,为其创建在数据库中的唯一标识,例如文本ID。
一个或多个实施例中,所述二元词组在文本中的位置信息包括:该二元词组在该文本中对应的行,以及在该行中的位置信息,可用二维数组表示,例如(1,4)表示第1行第4个字。若第三级树结构包含多级节点,可将在该行中的位置信息作为该行的子节点。
例如,文本数据“我在天安门广场”,对于词组“我在”,在相应的三级索引写入“(1,1)”,对于词组“天安”,在“天安”相应的三级索引写入“(1,2)”,对于词组“安门”,在“安门”相应的三级索引写入“(1,3)”,以此类推。
上述步骤1-4为向数据库插入新的文本数据的过程。对接收的新的文本数据分词处理后,边插入数据边写入索引信息,极大的提高了数据处理效率。
Postgresql数据库中一个metapage可存储多个索引文件,如图4所示,为数据文件插入数据的一个示例。例如将文本数据“全文数据库是全文检索系统的主要构成部分。所谓全文数据库是将一个完整的信息源的全部内容转化为计算机可以识别、处理的信息单元而形成的数据集合。全文数据库不仅存储了信息,而且还有……。”(文本的格式如图中所示),数据库接收文本数据后,首先将文本中除中文以外的符号滤除,然后创建倒排索引结构(Entry Tree1),同时开始二元分词。仅作为一个示例,该倒排索引结构的一级索引采用连续字母组合“a,b,…,g”、“h,i,…,n”、“o,q,…,z”;分词过程中将得到的词组“全文”、“文数”、“数据”、“据库”依次根据一级索引写入二级索引;并且在每个词组写入时,同时在三级索引写入该词组在文本中的位置,以第一个词组“全文”为例,该词组写入一级索引“o,q,…,z”下的二级索引,并获取其位置“第1行第1个字”写入三级索引;随着分词处理的进行,第二次出现词组“全文”,获取其位置“第1行第7个字”写入同一个三级索引,……,以此类推,直到分词完成,且所有分词得到的词组及其相应位置均写入索引文件。图中三级索引采用多级树结构(即Post Tree),第一级表示词组出行的所有行(词组“全文”出现在第1,3,8行),第二级表示词组出现的各行,第三级表示词组在相应行中的位置(第1行第1和7个字,第3行第4个字,第8行第6个字)。需要说明的是,图中未完全将分词得到的词组在索引中的位置示出,本领域技术人员应当能够根据本实施例的描述,以及图中的部分示意理解本实施例中向数据库插入文本数据的过程。至此,同时完成了二元分词和倒排索引的写入。
由于二元分词是按顺序将相邻两个汉字为一组进行拆分,因而无需将待整个文本数据读入后针对该文本数据基于词典或统计方法执行分词,而是在读入的过程中就能够执行分词,并且能够同时获取当前二元词组的所在位置写入倒排索引,大大提高了向数据库录入新数据时数据的处理效率。
所述针对接收的待检索文本执行全文检索的过程2包括以下步骤:
步骤201:接收待检索文本,对所述待检索文本进行二元分词,得到多个待检索二元词组;
步骤202:对于数据库中的每个文本数据,根据所述文本数据对应的倒排索引,按行统计所述多个待检索二元词组分别出现的频率;
步骤203:根据所述频率计算待检索文本与所述文本数据每一行的相似度;
步骤204:汇总待检索文本与该文本数据每一行的相似度,得到所述待检索文本与所述文本数据的相似度。
步骤205:将数据库中的文本数据按相似度从高到低排序,并输出。
本实施例倒排索引采用三级索引结构,且在三级索引中写入的位置信息采用“行+位置”的数据结构,执行检索时,能够快速查找到待检索文本中词组在数据库中各文本数据中的位置,并且快速统计出各词组在每个文本数据每一行的频率,从而快速计算待检索文本与每个文本数据的相似度。
实施例二
作为实施例一的一种变形,本实施例提供了一种数据库中文全文检索的方法,如图5所示,包括以下步骤:
一种数据库中文全文检索的方法,其特征在于,包括以下步骤:
预先创建倒排索引结构;
接收待插入到数据库中的文本数据;
对所述文本数据每相邻两个汉字为一组进行二元分词处理;
分词过程中,对于每个分词得到的二元词组,将所述二元词组和所述二元词组在该文本数据中的位置信息写入所述倒排索引;
接收待检索文本,并进行二元分词处理,得到多个待检索二元词组;
在所述数据库中,基于倒排索引和所述多个待检索二元词组执行全文检索。
与实施例一不同的是,本实施例预先创建数据表文件和相应的倒排索引结构,所述倒排索引结构包括三级索引,其中,一级索引用于标识各二元词组在二级索引中的位置,二级索引用于记录每个二元词组,以及所述文本在三级索引中的位置,三级索引用于记录二元词组在文本中的位置信息,所述位置信息包括包含该词组的行,以及在该行中的位置,具体步骤如图6所示。
插入新的数据文件过程3,包括以下步骤:
步骤301:接收要插入到数据库的文本数据;
步骤302:对所述文本数据进行预处理;
步骤303:对预处理后的所述文本数据每相邻两个汉字为一组进行二元分词,同时为所述文本数据创建倒排索引;
步骤304:分词过程中,将得到的多个二元词组根据一级索引分别写入二级索引,同时在各二元词组相应的三级索引中写入该二元词组在所述文本数据中的位置信息。
所述检索过程4,包括以下步骤:
步骤401:接收待检索文本,对所述待检索文本进行二元分词,得到多个待检索二元词组;
步骤402:对于数据库中的每个文本数据,根据所述文本数据对应的倒排索引,按行统计所述多个待检索二元词组分别出现的频率;
步骤403:根据所述频率计算待检索文本与所述文本数据每一行的相似度;
步骤404:汇总待检索文本与该文本数据每一行的相似度,得到所述待检索文本与所述文本数据的相似度;
步骤405:将数据库中的文本数据按相似度从高到低排序,并输出。
以上步骤的具体实现可参见实施例一相应部分的描述。
实施例三
基于实施例一的检索方法,本实施例提供了一种数据库中文全文检索系统。
一种数据库中文全文检索系统,如图7所示,包括客户端、数据库系统和服务器;其中,
客户端,接收用户输入的待检索文本,生成检索请求并发送至服务器;
服务器,与数据库系统连接,被配置为:接收文本数据插入到数据库,并生成所述文本数据相应的倒排索引,具体包括:
步骤101:接收要插入到数据库的文本数据;
步骤102:对所述文本数据进行预处理;
步骤103:对预处理后的所述文本数据每相邻两个汉字为一组进行二元分词,同时为所述文本数据创建倒排索引;所述倒排索引结构包括三级索引,其中,一级索引用于标识各二元词组在二级索引中的位置,二级索引用于记录每个二元词组,以及所述文本在三级索引中的位置,三级索引用于记录二元词组在文本中的位置信息;
步骤104:分词过程中,对于每个分词得到的二元词组,根据一级索引分别写入二级索引,同时在各二元词组相应的三级索引中写入该二元词组在所述文本数据中的位置信息。
所述服务器,还被配置为:接收所述待检索文本,在所述数据库中执行全文检索,具体包括:
步骤201:接收待检索文本,对所述待检索文本进行二元分词,得到多个待检索二元词组;
步骤202:对于数据库中的每个文本数据,根据所述文本数据对应的倒排索引,按行统计所述多个待检索二元词组分别出现的频率;
步骤203:根据所述频率计算待检索文本与所述文本数据每一行的相似度;
步骤204:汇总待检索文本与该文本数据每一行的相似度,得到所述待检索文本与所述文本数据的相似度;
步骤205:将数据库中的文本数据按相似度从高到低排序,并输出。
以上步骤的具体实现可参见实施例一相应部分的描述。
实施例四
基于实施例二的检索方法,本实施例提供了一种数据库中文全文检索系统。
一种数据库中文全文检索系统,如图7所示,包括客户端、数据库系统和服务器;其中,
客户端,接收用户输入的待检索文本,生成检索请求并发送至服务器;
服务器,与数据库系统连接,被配置为:接收文本数据插入到数据库,并生成所述文本数据相应的倒排索引,具体包括:
所述服务器中预先创建数据表文件和相应的倒排索引结构,所述倒排索引结构包括三级索引,其中,一级索引用于标识各二元词组在二级索引中的位置,二级索引用于记录每个二元词组,以及所述文本在三级索引中的位置,三级索引用于记录二元词组在文本中的位置信息,所述位置信息包括包含该词组的行,以及在该行中的位置。
步骤301:接收要插入到数据库的文本数据;
步骤302:对所述文本数据进行预处理;
步骤303:对预处理后的所述文本数据每相邻两个汉字为一组进行二元分词,同时为所述文本数据创建倒排索引;
步骤304:分词过程中,将得到的多个二元词组根据一级索引分别写入二级索引,同时在各二元词组相应的三级索引中写入该二元词组在所述文本数据中的位置信息。
接收所述待检索文本,在所述数据库中执行全文检索,被配置为:
步骤401:接收待检索文本,对所述待检索文本进行二元分词,得到多个待检索二元词组;
步骤402:对于数据库中的每个文本数据,根据所述文本数据对应的倒排索引,按行统计所述多个待检索二元词组分别出现的频率;
步骤403:根据所述频率计算待检索文本与所述文本数据每一行的相似度;
步骤404:汇总待检索文本与该文本数据每一行的相似度,得到所述待检索文本与所述文本数据的相似度;
步骤405:将数据库中的文本数据按相似度从高到低排序,并输出。
以上步骤的具体实现可参见实施例一相应部分的描述。
以上一个或多个实施例具有以下技术效果:
本公开对于待检索的文本,基于通过二元分词进行拆分,可以尽可能的罗列出该文本中可能的所有词组,就避免了出现其他中文分词解决方案中的词典不全的问题,对于网络词语、新兴词语也能够很好的识别和检索;
本公开接收要插入到数据库的文本后,进行二元分词,同时创建该文本的倒排索引文件,分词过程中将当前拆分出的词组,以及该词组在文本中的位置写入倒排索引,这种边分词边写入索引文件的方式,相较于先进行分词,分词后再统计每个词组在文本中的位置的方式,节省了一次读取数据的过程,处理效率更高;
本公开对通用的倒排索引进行了改进,使其包含三级索引机制:编码/字母——词组——词组在包含该词组的文档中的位置,并且该位置信息细化为“词组所在行+词组在该行的位置”,在进行全文检索时,能够直接根据该位置信息快速统计待检索文本与数据库中文本每一行的相似度,从而快速计算全文相似度;
由于二元分词会带来存储数据量大,为了避免索引文件写入时以及后续执行检索时的跨文件写入和读取问题,本公开基于常用词统计建立二级索引和相应的数据表文件,能够大大增加数据的读写速度,提高了数据库文本数据的处理效率以及检索效率。
本领域技术人员应该明白,上述本公开的各模块或各步骤可以用通用的计算机装置来实现,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。本公开不限制于任何特定的硬件和软件的结合。
以上所述仅为本公开的优选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
上述虽然结合附图对本公开的具体实施方式进行了描述,但并非对本公开保护范围的限制,所属领域技术人员应该明白,在本公开的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本公开的保护范围以内。

Claims (8)

1.一种数据库中文全文检索的方法,其特征在于,包括以下步骤:
接收待插入到数据库中的文本数据;
对所述文本数据每相邻两个汉字为一组进行二元分词处理,同时为所述文本数据创建倒排索引;
分词过程中,对于每个分词得到的二元词组,将所述二元词组和所述二元词组在该文本数据中的位置信息写入所述倒排索引;
接收待检索文本,并进行二元分词处理,得到多个待检索二元词组;
在所述数据库中,基于倒排索引和所述多个待检索二元词组执行全文检索;
所述倒排索引包括三级索引,其中,一级索引用于标识各二元词组在二级索引中的位置,二级索引用于记录每个二元词组,以及所述文本在三级索引中的位置,三级索引用于记录二元词组在文本中的位置信息,所述位置信息包括二元词组在所述文本中的行,以及在该行中的位置。
2.如权利要求1所述的一种数据库中文全文检索的方法,其特征在于,所述一级索引为编码;或
所述一级索引为字母或字母组合,对应多个以所述字母或字母组合标引的数据表文件;
进一步地,所述字母组合基于常用词汇的统计得到。
3.如权利要求1所述的一种数据库中文全文检索的方法,其特征在于,所述基于倒排索引和所述多个待检索二元词组执行全文检索包括:
接收待检索文本,对所述待检索文本进行二元分词,得到多个待检索二元词组;
对于数据库中的每个文本数据,根据所述文本数据对应的倒排索引,按行统计所述多个待检索二元词组分别出现的频率;
根据所述频率计算待检索文本与所述文本数据每一行的相似度;
汇总待检索文本与该文本数据每一行的相似度,得到所述待检索文本与所述文本数据的相似度;
将数据库中的文本数据按相似度从高到低排序并输出。
4.一种数据库中文全文检索的方法,其特征在于,包括以下步骤:
预先创建倒排索引结构;
接收待插入到数据库中的文本数据;
对所述文本数据每相邻两个汉字为一组进行二元分词处理;
分词过程中,对于每个分词得到的二元词组,将所述二元词组和所述二元词组在该文本数据中的位置信息写入所述倒排索引;
接收待检索文本,并进行二元分词处理,得到多个待检索二元词组;
在所述数据库中,基于倒排索引和所述多个待检索二元词组执行全文检索;
所述倒排索引包括三级索引,其中,一级索引用于标识各二元词组在二级索引中的位置,二级索引用于记录每个二元词组,以及所述文本在三级索引中的位置,三级索引用于记录二元词组在文本中的位置信息,所述位置信息包括二元词组在所述文本中的行,以及在该行中的位置。
5.如权利要求4所述的一种数据库中文全文检索的方法,其特征在于,所述一级索引为编码;或
所述一级索引为字母或字母组合,对应多个以所述字母或字母组合标引的数据表文件;
进一步地,所述字母组合基于常用词汇的统计得到。
6.如权利要求4所述的一种数据库中文全文检索的方法,其特征在于,在所述数据库中对所述待检索文本进行全文检索包括:
所述基于倒排索引和所述多个待检索二元词组执行全文检索包括:
接收待检索文本,对所述待检索文本进行二元分词,得到多个待检索二元词组;
对于数据库中的每个文本数据,根据所述文本数据对应的倒排索引,按行统计所述多个待检索二元词组分别出现的频率;
根据所述频率计算待检索文本与所述文本数据每一行的相似度;
汇总待检索文本与该文本数据每一行的相似度,得到所述待检索文本与所述文本数据的相似度;
将数据库中的文本数据按相似度从高到低排序并输出。
7.一种服务器,与数据库系统连接,其特征在于,执行如权利要求1-3任一项或4-6所述数据库中文全文检索的方法。
8.一种数据库中文全文检索系统,其特征在于,包括客户端、数据库系统和如权利要求7所述的服务器;所述客户端接收待检索文本并发送至服务器。
CN201910053622.3A 2019-01-21 2019-01-21 一种数据库中文全文检索的方法及系统 Active CN109885641B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910053622.3A CN109885641B (zh) 2019-01-21 2019-01-21 一种数据库中文全文检索的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910053622.3A CN109885641B (zh) 2019-01-21 2019-01-21 一种数据库中文全文检索的方法及系统

Publications (2)

Publication Number Publication Date
CN109885641A CN109885641A (zh) 2019-06-14
CN109885641B true CN109885641B (zh) 2021-03-09

Family

ID=66926311

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910053622.3A Active CN109885641B (zh) 2019-01-21 2019-01-21 一种数据库中文全文检索的方法及系统

Country Status (1)

Country Link
CN (1) CN109885641B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110765262A (zh) * 2019-09-24 2020-02-07 北京嘀嘀无限科技发展有限公司 Poi文本的检索方法、装置及电子设备
CN113127662A (zh) * 2021-04-13 2021-07-16 广联达科技股份有限公司 构件搜索方法、装置、电子设备及可读存储介质
CN113609249B (zh) * 2021-09-09 2023-04-28 北京环境特性研究所 目标模型仿真数据存储方法及装置
CN115840799B (zh) * 2023-02-24 2023-05-02 南通专猎网络科技有限公司 一种基于深度学习的知识产权综合管理系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108776705A (zh) * 2018-06-12 2018-11-09 厦门市美亚柏科信息股份有限公司 一种文本全文精确查询的方法、装置、设备及可读介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3696745B2 (ja) * 1999-02-09 2005-09-21 株式会社日立製作所 文書検索方法及び文書検索システム及び文書検索プログラムを記録したコンピュータ読み取り可能な記録媒体
CN101393551B (zh) * 2007-09-17 2011-03-23 鸿富锦精密工业(深圳)有限公司 专利全文检索的索引建立系统及方法
CN103823799A (zh) * 2012-11-16 2014-05-28 镇江诺尼基智能技术有限公司 新一代行业知识全文检索方法
US10346494B2 (en) * 2017-04-16 2019-07-09 Radim Rehurek Search engine system communicating with a full text search engine to retrieve most similar documents

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108776705A (zh) * 2018-06-12 2018-11-09 厦门市美亚柏科信息股份有限公司 一种文本全文精确查询的方法、装置、设备及可读介质

Also Published As

Publication number Publication date
CN109885641A (zh) 2019-06-14

Similar Documents

Publication Publication Date Title
CN108573045B (zh) 一种基于多阶指纹的比对矩阵相似度检索方法
CN102479191B (zh) 提供多粒度分词结果的方法及其装置
US8392175B2 (en) Phrase-based document clustering with automatic phrase extraction
Agichtein et al. Mining reference tables for automatic text segmentation
CN110321925B (zh) 一种基于语义聚合指纹的文本多粒度相似度比对方法
CN109885641B (zh) 一种数据库中文全文检索的方法及系统
TWI480746B (zh) 使用經結構化之資料儲存器達到較快速全文檢索
CN107862070B (zh) 基于文本聚类的线上课堂讨论短文本即时分组方法及系统
CN103365992B (zh) 一种基于一维线性空间实现Trie树的词典检索方法
JP5605583B2 (ja) 検索方法、類似度計算方法、類似度計算及び同一文書照合システムと、そのプログラム
CN102789464A (zh) 基于语意识别的自然语言处理方法、装置和系统
Jain et al. Context sensitive text summarization using k means clustering algorithm
US20210103699A1 (en) Data extraction method and data extraction device
TWI818713B (zh) 用於自動地將用語指派至文本文件之電腦實施方法、電腦程式產品及電腦系統
CN110705285B (zh) 一种政务文本主题词库构建方法、装置、服务器及可读存储介质
US8682900B2 (en) System, method and computer program product for documents retrieval
Tahmasebi et al. On the applicability of word sense discrimination on 201 years of modern english
CN113032371A (zh) 数据库语法分析方法、装置和计算机设备
CN117291192B (zh) 一种政务文本语义理解分析方法及系统
Barari et al. CloniZER spell checker adaptive language independent spell checker
US11361565B2 (en) Natural language processing (NLP) pipeline for automated attribute extraction
CN118152520A (zh) 一种基于大语言模型技术的知识库自动快速构建方法、系统及装置
CN110347804B (zh) 一种线性时间复杂度的敏感信息检测方法
CN115617965A (zh) 一种语言结构大数据的快速检索方法
CN115438147A (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
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A method and system of Chinese full text retrieval in database

Effective date of registration: 20220331

Granted publication date: 20210309

Pledgee: Bank of Beijing Co.,Ltd. Jinan Branch

Pledgor: HIGHGO BASE SOFTWARE Co.,Ltd.

Registration number: Y2022980003586

PE01 Entry into force of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20230619

Granted publication date: 20210309

Pledgee: Bank of Beijing Co.,Ltd. Jinan Branch

Pledgor: HIGHGO BASE SOFTWARE Co.,Ltd.

Registration number: Y2022980003586

PC01 Cancellation of the registration of the contract for pledge of patent right