CN114490917A - 一种全文检索功能的实现方法、装置与电子设备 - Google Patents
一种全文检索功能的实现方法、装置与电子设备 Download PDFInfo
- Publication number
- CN114490917A CN114490917A CN202011253514.XA CN202011253514A CN114490917A CN 114490917 A CN114490917 A CN 114490917A CN 202011253514 A CN202011253514 A CN 202011253514A CN 114490917 A CN114490917 A CN 114490917A
- Authority
- CN
- China
- Prior art keywords
- data
- inverted index
- substrings
- original
- ehcahe
- 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 57
- 230000006870 function Effects 0.000 claims abstract description 40
- 238000003860 storage Methods 0.000 claims description 39
- 238000012544 monitoring process Methods 0.000 claims description 16
- 230000011218 segmentation Effects 0.000 claims description 10
- 230000008569 process Effects 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 13
- 238000004590 computer program Methods 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 241000272194 Ciconiiformes Species 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000013549 information retrieval technique Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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/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
- G06F16/319—Inverted 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/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开一种全文检索功能的实现方法、装置与电子设备。本申请的方法包括:获取原始数据,创建所述原始数据对应的倒排索引;将所述倒排索引存储到本地Ehcahe中;在启动查询索引操作时,从所述Ehcahe中获得查询结果。本申请的技术方案不依赖于外部组件和外部网络,并利用Ehcache本身的功能可以控制内存使用,避免随原始数据增加,倒排索引占用内存无限增加的情况出现。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种全文检索功能的实现方法、装置与电子设备。
背景技术
全文检索(Full Text Retrieval)是指以全部文本信息作为检索对象的一种信息检索技术。将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对此有一定结构的数据进行搜索,从而达到搜索相对较快的目的。这部分从非结构化数据中提取出的然后重新组织的信息,我们称之索引。这种先建立索引,再对索引进行搜索的过程就是全文检索。
目前,全文检索大多是基于Lucene技术,Lucene是Apache(音译为阿帕奇)软件基金会下的一个开放源代码的全文检索引擎工具包,提供了完整的查询引擎、索引引擎和部分文本分析引擎。所熟知的全文检索引擎Solr和ES(ElasticSearch,弹性搜索)都是基于Lucene实现的,而现有方案大多是基于Solr及ES实现的全文检索功能。这种方式实现全文检索需要依赖于外部部署Solr及ES服务(集群),但在某些场景下,软件本身无法依赖外部组件(如无法访问网络)或软件为保证安装使用方便,开箱即用等,此时无法使用Solr或ES实现全文检索功能。
发明内容
本申请实施例提供了一种不依赖外部组件的全文检索功能的实现方法、装置与电子设备。
本申请实施例采用下述技术方案:
第一方面,本申请实施例提供一种全文检索功能的实现方法,该方法包括:
获取原始数据,创建所述原始数据对应的倒排索引;
将所述倒排索引存储到本地Ehcahe中;
在启动查询索引操作时,从所述Ehcahe中获得查询结果。
第二方面,本申请实施例还提供一种全文检索功能的实现装置,该装置包括:
处理单元,用于获取原始数据,创建所述原始数据对应的倒排索引;将所述倒排索引存储到本地Ehcah中;
查询单元,用于在启动查询索引操作时,从所述Ehcahe中获得查询结果。
第三方面,本申请实施例还提供一种电子设备,包括:处理器;以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行全文检索功能的实现方法。
第四方面,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行全文检索功能的实现方法。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
本申请实施例构建原始数据的倒排索引,并将倒排索引使用Ehcahe进行存储,查询时直接使用Ehcahe进行查询,完成全文检索功能,就全文检索功能的构建与查询过程而言,没有使用如Solr或ES等外部组件,且全文检索功能都是在本地执行,未使用外部网络,因此本实施例不依赖于外部组件和外部网络,只需要通过适当的算法对指定的数据内容创建索引,即可实现全文检索功能,此外,利用Ehcache本身的功能可以控制内存使用,避免随原始数据增加,倒排索引占用内存无限增加的情况出现。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例中一种全文检索功能的实现方法流程图;
图2为本申请实施例中一种分词流程示意图;
图3为本申请实施例中一种构建存储倒排索引的流程图;
图4为本申请实施例中一种全文检索功能的实现装置的结构框图;
图5为本申请实施例中一种电子设备的结构示意图。
具体实施方式
为便于理解本申请实施例的技术方案,对本申请实施例中涉及的相关术语进行说明。
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图1为本申请实施例中一种全文检索功能的实现方法流程图,如图1所示,本实施例的方法包括以下步骤:
S110,获取原始数据,创建所述原始数据对应的倒排索引。
本实施例根据应用需求确定用于构建检索服务器(即Ehcahe)的原始数据,原始数据的来源可以为文本、数据库或其他数据源。在数据量过大时,可以采用流处理方式来获取原始数据。
倒排索引源于实际应用中根据属性的值来查询记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index),带有倒排索引的文件称为倒排索引文件,简称倒排文件(inverted file)。
S120,将所述倒排索引存储到本地Ehcahe中。
在全文检索应用中,程序运行不应占用过多内存,当需处理的原始数据较大时,生成的索引也相应增大,如全部缓存在内存中,内存使用会不断增加,最终导致内存溢出。而Ehcahe本身具有内存使用可控的功能,因此,本实施例将倒排索引存储到Ehcahe,来达到内存使用可控的目的。
S130,在启动查询索引操作时,从所述Ehcahe中获得查询结果。
由图1所示可知,本实施例构建原始数据的倒排索引,并将倒排索引使用Ehcahe进行存储,查询时直接使用Ehcahe进行查询,完成全文检索功能,就全文检索功能的构建与查询过程而言,没有使用如Solr或ES等外部组件,且全文检索功能都是在本地执行,未使用外部网络,因此本实施例不依赖于外部组件和外部网络,只需要通过适当的算法对指定的数据内容创建索引,即可实现全文检索功能,此外,利用Ehcache本身的功能可以控制内存使用,避免随原始数据增加,倒排索引占用内存无限增加的情况出现。
在一个实施例中,通过下述方法步骤1-步骤4来创建原始数据对应的倒排索引:
步骤1、解析原始数据,生成原始数据对应的原始字符串。
对原始数据进行解析,获取原始数据的数据类型,数据库类型包括文本数据、数据库数据或其他形式的数据,在此不再一一枚举。
这里以原始数据的类型为文本数据、数据库数据为例,若原始数据的数据类型为文本数据,将文本数据中的一行数据作为一条原始字符串,得到多条原始字符串;若原始数据的数据类型为数据库数据,将数据库数据中的一条记录作为一条原始字符串,得到多条原始字符串。
在通过原始数据得到多条原始字符串时,创建每条原始字符串对应的倒排索引并存储到本地Ehcahe服务器中,这样在启动查询索引操作时,可以定位到查询结果所在文本或数据库的具***置,例如可以知道查询结果在文本中的第几行,在数据库的哪个存储位置。
具体应用时,对原始数据解析,还对原始数据的数据内容进行过滤,例如按照应用需求对原始数据的数据内容进行过滤,若应用需求是检索“XX品牌的汽车”,那么在解析原始数据后,还可以过滤掉与“XX品牌的汽车”无关的数据内容,得到与应用需求相关的数据内容,基于该部分数据内容生成原始字符串。
步骤2、将原始字符串进行分词处理,得到多个子串。
本实施例截取原始字符串中以每个字符为起始的全部字符串,得到多个子串。参考图2所示,计算原始字符串的字符总量N,将当前字符序号记为i,i的取值为1,2,3…N,i的初始值为1,从第i个字符开始,截取第i个字符开始的全部子串,截取完后,通过使i+1的方式来更新i的取值,直至i的取值更新到N为止。这样可以获得原始字符串的全部可能的子串。
当然,也可以采用其他形式的分词方法,例如基于词典分词、基于机器学习算法分词,由于本实施例分词方法更为简单,复杂度更低,因此,优选采用本实施例的分词方法。
步骤3、将具有相同数据内容的子串写入到本地存储域中的临时索引文件,得到多个子串对应的多个临时索引文件。
本实施例在得到原始字符串对应的多个子串之后,将每个子串的数据内容作为该子串的Key、将每个子串的数据ID作为该子串的Value,对于文本形式的原始数据来说,数据ID可以理解为子串的数据内容在原始数据中的行数与列数,对于数据库形式的原始数据来说,数据ID可以理解为子串的数据内容在数据库中的存储地址。
这里可以对每个子串的Key做哈希处理,得到每个子串对应的哈希值,根据子串对应的哈希值,将哈希值相同的子串以Key-Value的形式写入到同一个临时索引文件中。由于数据内容相同的子串其对应的哈希值一定相同,因此,通过对Key做哈希处理将多个子串进行分类存储时,数据内容相同的子串被存储到同一临时索引文件中,这样后续可以以文件为对象来构建倒排索引。
相比直接以多个子串为对象来构建倒排索引,本实施例将临时索引文件作为中间结果,后续可以由文件加载倒排索引到Ehcahe的缓存,可以显著减少对内存资源的占用。
步骤4、对每个临时索引文件中的子串进行整合处理,将具有相同数据内容的子串整合为一条倒排索引项,得到由多个倒排索引项构成的倒排索引文件。
这里将每个临时索引文件中具有相同Key值的子串的Value进行合并,得到相同Key值对应的集合Values,由Key值及Key值对应的集合Values得到一条倒排索引项,即将该Key值继续作为倒排索引项的Key,将集合Values作为倒排索引项的Value。
本实施例中的本地存储域可以为本地的磁盘、硬盘等存储设备提供的存储区域。
在构建好倒排索引文件之后,将倒排索引文件保存到本地存储域,这里的本地存储域可以为本地的磁盘、硬盘等存储设备提供的存储区域。这样可以从本地存储域中获得倒排索引文件,将倒排索引文件中的数据写入到Ehcahe的缓存中,并监测Ehcahe的缓存,若达到缓存上限,将倒排索引文件中的数据写入到Ehcahe的硬盘中。
下面结合图3对图1中全文检索功能的实现方法进行详细说明,如图3所示,本实施例的方法包括以下步骤:
步骤S301,获取原始数据。
本实施例的原始数据包括文本形式的文本数据或数据库形式的数据库数据,为便于说明,以一个具体例子来说,若原始数据为文本数据,该文本数据如下:
在监控领域,被监控设备中的被监控指标需要在用户要求的设定范围内活动,如 超出该设定范围,说明被监控的设备中的被监控的指标发生异常,应当向用户发起告警。其 中,将该设定范围通过基线数据来表征,将被监控的指标的数据与相应的基线数据进行比 较即可实现对该指标的有效监控;为满足监控对象实时产生的数据的监控需求,既要求有 快速处理、低延迟的***架构,又要有快速处理的基线计算方法。
步骤S302,解析原始数据。
沿用上述文本数据,在解析该文本数据之后,获得文本数据包括六行数据内容,可以对问对应生成六条原始字符串。这里可以基于应用需求对该文本数据进行过滤,若应用需求与“监控”相关,则第一行文本过滤后的数据内容为“在监控领域被监控设备中的被监控指标”,实际应用中还可以过滤掉虚词、数字、字母、日期等,这样得到的第一条原始字符串为“在监控领域被监控设备中被监控指标”,下面以第一条原始字符串为例说明倒排索引的创建过程。
步骤S303,分词处理。
第一条原始字符串为“在监控领域被监控设备中被监控指标”,该字符串的长度为16。参考图2,对该原始字符串进行分词处理,获得此条原始字符串的全部可能的子串,共可以获得135个子串。这里用数组a135[]记录该原始字符串的各个子串:
a0=“在”,a1=“在监”,a2=“在监控”…,a15=“在监控领域被监控设备中被监控指标”,
a16=“监”,a17=“监控”,a18=“监控领”…,a30=“监控领域被监控设备中被监控指标”,
a31=“控”,a32=“控领”,a33=“控领域”…,a44=“控领域被监控设备中被监控指标”,
a45=“领”,a46=“领域”,a47=“领域被”…,a57=“领域被监控设备中被监控指标”,
a58=“域”,a59=“域被”,a60=“域被监”…,a69=“域被监控设备中被监控指标”,
a70=“被”,a71=“被监”,a72=“被监控”…,a80=“被监控设备中被监控指标”,
a81=“监”,a82=“监控”,a83=“监控设”…,a90=“监控设备中被监控指标”,
a91=“控”,a92=“控设”,a93=“控设备”…,a99=“控设备中被监控指标”,
a100=“设”,a101=“设备”,a102=“设备中”…,a107=“设备中被监控指标”,
a108=“备”,a109=“备中”,a110=“备中被”…,a114=“备中被监控指标”,
a115=“中”,a116=“中被”,a117=“中被监”…,a120=“中被监控指标”,
a120=“被”,a121=“被监”,a122=“被监控”…,a125=“被监控指标”,
a126=“监”,a127=“监控”,a128=“监控指”,a129=“监控指标”,
a130=“控”,a131=“控指”,a132=“控指标”,
a133=“指”,a134=“指标”,
a135=“标”。
步骤S304,创建临时索引文件。
沿用上述有第一条原始字符串得到的135个子串,对这135个子串:将每个子串的数据内容作为Key,数据ID做为Value,示例性的,子串a0=“在”的key为字符“在”,Value为“R1C3”(这里R表示行,C表示列),这样按Key值做哈希方式,将多个子串写入到对应的多个文本文件中,假设这135个子串共得到15个临时索引文件,即具有相同长度的子串被分到了一个临时索引文件中,这样具有相同数据内容的子串,如前文中的子串a16=“监”、a81=“监”与a126=“监”被分到了同一个临时索引文件中。
需要注意的是,一个子串只能被记录在一个临时索引文件中,一个子串对应为临时索引文件中的一行记录,生成的临时索引文件可以作为倒排索引的一个中间结果的缓存,后续可以直接加载临时索引文件,基于临时索引文件构建倒排索引文件。
步骤S305,读取临时索引文件。
依次读取每个临时索引文件,逐行解析,取得Key及Value,并将Key值相同的Value合并为集合Values,形成倒排索引项,以前文中的子串a16=“监”、a81=“监”与a126=“监”为例,其中,子串a16=“监”的Value为“R1C4”,子串a81=“监”的Value为“R1C10”,子串a126=“监”的Value为“R1C17”,那么Key值为“监”的各个子串的Value合并所得到的集合Values为{“R1C4”,“R1C10”,“R1C17”},那么Key=“监”,Values={“R1C4”,“R1C10”,“R1C17”}为一个倒排索引项。
将得到的所有倒排索引项写入本地存储域的一个文件中,该文件即为倒排索引文件。
步骤S306,将倒排索引文件写入Ehcahe。
将倒排索引文件中的Key及其对应的Value(该Value为更新后的Value,即为集合Values)以key-value的形式存入Ehcache中。Ehcache可通过配置控制使用内存的大小,如maxBytesLocalHeap="500M"maxBytesLocalOffHeap="5G"等参数,当缓存中的数据大小超过设定的限制时,会自动将数据写到硬盘中,从而保证内存使用在一定范围内,达到控制内存使用的目的。
本实施例相比于使用Solr或ES的方案优点在于,完全不依赖于外部网络,不依赖于外部组件,部署更加灵活,企鹅分词策略可自定义。
图4为本申请实施例中一种全文检索功能的实现装置的结构框图,如图4所示,全文检索功能的实现装置400包括:
处理单元410,用于获取原始数据,创建所述原始数据对应的倒排索引;将所述倒排索引存储到本地Ehcahe中;
查询单元420,用于在启动查询索引操作时,从所述Ehcahe中获得查询结果。
在一些实施例中,处理单元410包括创建模块,创建模块用于解析所述原始数据,生成所述原始数据对应的原始字符串;将所述原始字符串进行分词处理,得到多个子串;将具有相同数据内容的子串写入到本地存储域中的临时索引文件,得到多个子串对应的多个临时索引文件;对每个临时索引文件中的子串进行整合处理,将具有相同数据内容的子串整合为一条倒排索引项,得到由多个倒排索引项构成的倒排索引文件。
在一些实施例中,创建模块还用于将每个子串的数据内容作为该子串的Key、将每个子串的数据ID作为该子串的Value,对每个子串的Key做哈希处理,得到每个子串对应的哈希值;根据子串对应的哈希值,将哈希值相同的子串以Key-Value的形式写入到同一个临时索引文件中。
在一些实施例中,创建模块进一步用于将每个临时索引文件中相同Key值的子串的Value进行合并,得到相同Key值对应的集合Values,由Key值及Key值对应的集合Values得到一条倒排索引项。
在一些实施例中,创建模块具体用于解析所述原始数据,获取所述原始数据的数据类型;若所述原始数据的数据类型为文本数据,将所述文本数据中的一行数据作为一条原始字符串,得到多条原始字符串;若所述原始数据的数据类型为数据库数据,将所述数据库数据中的一条记录作为一条原始字符串,得到多条原始字符串。
创建模块具体用于截取所述原始字符串中以每个字符为起始的全部字符串,得到多个子串。
在一些实施例中,处理单元410还包括存储模块,存储模块用于将所述倒排索引文件保存到本地存储域,从本地存储域中获得倒排索引文件,将所述倒排索引文件中的数据写入到Ehcahe的缓存中;监测所述Ehcahe的缓存,若达到缓存上限,将倒排索引文件中的数据写入到Ehcahe的硬盘中。
能够理解,上述全文检索功能的实现装置,能够实现前述实施例中提供的全文检索功能的实现方法的各个步骤,关于全文检索功能的实现方法的相关阐释均适用于全文检索功能的实现装置,此处不再赘述。
图5是本申请的一个实施例电子设备的结构示意图。请参考图5,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成全文检索功能的实现装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
获取原始数据,创建所述原始数据对应的倒排索引;
将所述倒排索引存储到本地Ehcahe中;
在启动查询索引操作时,从所述Ehcahe中获得查询结果。
上述如本申请图1所示实施例揭示的全文检索功能的实现装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central ProcessingUnit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
该电子设备还可执行图1中全文检索功能的实现装置执行的方法,并实现全文检索功能的实现装置在图1所示实施例的功能,本申请实施例在此不再赘述。
本申请实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的电子设备执行时,能够使该电子设备执行图1所示实施例中全文检索功能的实现装置执行的方法,并具体用于执行:
获取原始数据,创建所述原始数据对应的倒排索引;
将所述倒排索引存储到本地Ehcahe中;
在启动查询索引操作时,从所述Ehcahe中获得查询结果。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、***或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种全文检索功能的实现方法,其特征在于,所述方法包括:
获取原始数据,创建所述原始数据对应的倒排索引;
将所述倒排索引存储到本地Ehcahe中;
在启动查询索引操作时,从所述Ehcahe中获得查询结果。
2.如权利要求1所述方法,其特征在于,创建所述原始数据对应的倒排索引,包括:
解析所述原始数据,生成所述原始数据对应的原始字符串;
将所述原始字符串进行分词处理,得到多个子串;
将具有相同数据内容的子串写入到本地存储域中的临时索引文件,得到多个子串对应的多个临时索引文件;
对每个临时索引文件中的子串进行整合处理,将具有相同数据内容的子串整合为一条倒排索引项,得到由多个倒排索引项构成的倒排索引文件。
3.如权利要求2所述方法,其特征在于,将具有相同数据内容的子串写入到本地存储域中的临时索引文件,包括:
将每个子串的数据内容作为该子串的Key、将每个子串的数据ID作为该子串的Value,对每个子串的Key做哈希处理,得到每个子串对应的哈希值;
根据子串对应的哈希值,将哈希值相同的子串以Key-Value的形式写入到同一个临时索引文件中。
4.如权利要求3所述方法,其特征在于,对每个临时索引文件中的子串进行整合处理,将具有相同数据内容的子串整合为一条倒排索引项,包括:
将每个临时索引文件中具有相同Key值的子串的Value进行合并,得到相同Key值对应的集合Values,由Key值及Key值对应的集合Values得到一条倒排索引项。
5.如权利要求2所述方法,其特征在于,所述得到由多个倒排索引项构成的倒排索引文件之后,所述方法还包括:将所述倒排索引文件保存到本地存储域;
相应的,所述将所述倒排索引存储到本地Ehcahe中,包括:
从所述本地存储域中获得倒排索引文件,将所述倒排索引文件中的数据写入到Ehcahe的缓存中;
监测所述Ehcahe的缓存,若达到缓存上限,将所述倒排索引文件中的数据写入到Ehcahe的硬盘中。
6.如权利要求2所述的方法,其特征在于,解析所述原始数据,生成所述原始数据对应的原始字符串,包括:
解析所述原始数据,获取所述原始数据的数据类型;
若所述原始数据的数据类型为文本数据,将所述文本数据中的一行数据作为一条原始字符串,得到多条原始字符串;
若所述原始数据的数据类型为数据库数据,将所述数据库数据中的一条记录作为一条原始字符串,得到多条原始字符串。
7.如权利要求2所述的方法,其特征在于,将所述原始字符串进行分词处理,得到多个子串,包括:
截取所述原始字符串中以每个字符为起始的全部字符串,得到多个子串。
8.一种全文检索功能的实现装置,其特征在于,所述装置包括:
处理单元,用于获取原始数据,创建所述原始数据对应的倒排索引;将所述倒排索引存储到本地Ehcahe中;
查询单元,用于在启动查询索引操作时,从所述Ehcahe中获得查询结果。
9.一种电子设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行所述权利要求1~7之任一所述方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行所述权利要求1~7之任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011253514.XA CN114490917A (zh) | 2020-11-11 | 2020-11-11 | 一种全文检索功能的实现方法、装置与电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011253514.XA CN114490917A (zh) | 2020-11-11 | 2020-11-11 | 一种全文检索功能的实现方法、装置与电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114490917A true CN114490917A (zh) | 2022-05-13 |
Family
ID=81489867
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011253514.XA Pending CN114490917A (zh) | 2020-11-11 | 2020-11-11 | 一种全文检索功能的实现方法、装置与电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114490917A (zh) |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090222465A1 (en) * | 2008-02-28 | 2009-09-03 | Emmanuel Bernard | Caching name-based filters in a full-text search engine |
CN102968464A (zh) * | 2012-11-08 | 2013-03-13 | 广东电子工业研究院有限公司 | 一种基于索引的本地资源快速检索***及其检索方法 |
CN103714096A (zh) * | 2012-10-09 | 2014-04-09 | 阿里巴巴集团控股有限公司 | 基于Lucene的倒排索引***构建、数据处理方法及装置 |
CN105243086A (zh) * | 2015-09-08 | 2016-01-13 | 北京北大千方科技有限公司 | 一种车辆信息查询方法和装置 |
US20160103906A1 (en) * | 2013-05-16 | 2016-04-14 | University Of Utah Research Foundation | Generating and implementing local search engines over large databases |
CN106874401A (zh) * | 2016-12-30 | 2017-06-20 | 中安威士(北京)科技有限公司 | 一种面向数据库加密字段模糊检索的密文索引方法 |
CN107025243A (zh) * | 2016-02-02 | 2017-08-08 | 北京神州泰岳软件股份有限公司 | 一种资源数据的查询方法、查询客户端和查询*** |
CN107168966A (zh) * | 2016-03-07 | 2017-09-15 | 阿里巴巴集团控股有限公司 | 一种搜索引擎索引构建方法及装置 |
US20190095581A1 (en) * | 2017-09-22 | 2019-03-28 | Cerner Innovation, Inc. | Semantic search for a health information exchange |
CN110263061A (zh) * | 2019-06-17 | 2019-09-20 | 郑州阿帕斯科技有限公司 | 一种数据查询方法及*** |
CN110275864A (zh) * | 2019-06-11 | 2019-09-24 | 武汉深之度科技有限公司 | 索引建立方法、数据查询方法及计算设备 |
CN111090628A (zh) * | 2019-12-20 | 2020-05-01 | 上海米哈游网络科技股份有限公司 | 一种数据处理方法、装置、存储介质及电子设备 |
CN111339382A (zh) * | 2020-03-11 | 2020-06-26 | 腾讯科技(深圳)有限公司 | 字符串数据检索方法、装置、计算机设备及存储介质 |
CN111382226A (zh) * | 2018-12-29 | 2020-07-07 | 北京神州泰岳软件股份有限公司 | 一种数据库查询检索方法、装置和电子设备 |
CN111858677A (zh) * | 2020-07-27 | 2020-10-30 | 中国平安财产保险股份有限公司 | 本地缓存数据访问方法、装置、设备及存储介质 |
-
2020
- 2020-11-11 CN CN202011253514.XA patent/CN114490917A/zh active Pending
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090222465A1 (en) * | 2008-02-28 | 2009-09-03 | Emmanuel Bernard | Caching name-based filters in a full-text search engine |
CN103714096A (zh) * | 2012-10-09 | 2014-04-09 | 阿里巴巴集团控股有限公司 | 基于Lucene的倒排索引***构建、数据处理方法及装置 |
CN102968464A (zh) * | 2012-11-08 | 2013-03-13 | 广东电子工业研究院有限公司 | 一种基于索引的本地资源快速检索***及其检索方法 |
US20160103906A1 (en) * | 2013-05-16 | 2016-04-14 | University Of Utah Research Foundation | Generating and implementing local search engines over large databases |
CN105243086A (zh) * | 2015-09-08 | 2016-01-13 | 北京北大千方科技有限公司 | 一种车辆信息查询方法和装置 |
CN107025243A (zh) * | 2016-02-02 | 2017-08-08 | 北京神州泰岳软件股份有限公司 | 一种资源数据的查询方法、查询客户端和查询*** |
CN107168966A (zh) * | 2016-03-07 | 2017-09-15 | 阿里巴巴集团控股有限公司 | 一种搜索引擎索引构建方法及装置 |
CN106874401A (zh) * | 2016-12-30 | 2017-06-20 | 中安威士(北京)科技有限公司 | 一种面向数据库加密字段模糊检索的密文索引方法 |
US20190095581A1 (en) * | 2017-09-22 | 2019-03-28 | Cerner Innovation, Inc. | Semantic search for a health information exchange |
CN111382226A (zh) * | 2018-12-29 | 2020-07-07 | 北京神州泰岳软件股份有限公司 | 一种数据库查询检索方法、装置和电子设备 |
CN110275864A (zh) * | 2019-06-11 | 2019-09-24 | 武汉深之度科技有限公司 | 索引建立方法、数据查询方法及计算设备 |
CN110263061A (zh) * | 2019-06-17 | 2019-09-20 | 郑州阿帕斯科技有限公司 | 一种数据查询方法及*** |
CN111090628A (zh) * | 2019-12-20 | 2020-05-01 | 上海米哈游网络科技股份有限公司 | 一种数据处理方法、装置、存储介质及电子设备 |
CN111339382A (zh) * | 2020-03-11 | 2020-06-26 | 腾讯科技(深圳)有限公司 | 字符串数据检索方法、装置、计算机设备及存储介质 |
CN111858677A (zh) * | 2020-07-27 | 2020-10-30 | 中国平安财产保险股份有限公司 | 本地缓存数据访问方法、装置、设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
廖良泽;: "供电公司组织绩效管理***的设计及应用", 电子技术与软件工程, no. 06, 31 December 2017 (2017-12-31) * |
张程: "《分布式***架构》", 30 June 2020, 机械工业出版社, pages: 202 - 203 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11625501B2 (en) | Masking sensitive information in records of filtered accesses to unstructured data | |
US9916368B2 (en) | Non-exclusionary search within in-memory databases | |
US20150154264A1 (en) | Method for facet searching and search suggestions | |
CA2919878C (en) | Refining search query results | |
US10678784B2 (en) | Dynamic column synopsis for analytical databases | |
KR20160033666A (ko) | 검색 시스템을 위한 써드 파티 검색 애플리케이션들 | |
US9245003B2 (en) | Method and system for memory efficient, update optimized, transactional full-text index view maintenance | |
US8667010B2 (en) | Database table partitioning allowing overlaps used in full text query | |
CN112181902A (zh) | 数据库的存储方法、装置及电子设备 | |
US20230153455A1 (en) | Query-based database redaction | |
CN111090668B (zh) | 数据检索方法及装置、电子设备和计算机可读存储介质 | |
CN115687392A (zh) | 一种sql语句的优化执行方法、装置、电子设备及介质 | |
CN114490917A (zh) | 一种全文检索功能的实现方法、装置与电子设备 | |
US9286349B2 (en) | Dynamic search system | |
US20180081942A1 (en) | Managing Data Obsolescence in Relational Databases | |
CN108984720B (zh) | 基于列存储的数据查询方法、装置、服务器及存储介质 | |
US11783078B1 (en) | Database redaction for semi-structured and unstructured data | |
US10628452B2 (en) | Providing multidimensional attribute value information | |
Pan | Workload-Adaptive Filtering in Storage Engines | |
CN117874082A (zh) | 一种关联字典数据检索的方法及相关组件 | |
CN116126620A (zh) | 数据库日志处理方法、数据库变更查询方法及相关装置 | |
CN112434340A (zh) | 一种基于Spark的政务大数据匿名***及方法 | |
CN114020698A (zh) | 搜索方法、装置、分布式搜索***、介质及程序产品 | |
CN117076472A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
KR20240001362A (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 |