一种文档存储、检索方法及装置与流程

文档序号:12364134阅读:174来源:国知局
一种文档存储、检索方法及装置与流程
本发明涉及计算机
技术领域
,尤其涉及一种文档存储方法及装置,同时还涉及一种文档检索方法及装置。
背景技术
:随着信息技术的发展进步,对信息资源的管理是一项综合性的、多学科交叉的工作。其中对于信息的检索往往要占整个信息资源管理工作量的一半以上。现有的信息检索系统通常是基于精确索引以及结构化条件进行检索。然而随着大数据和云技术的普及,由于信息的形式多种多样,在这种条件下,目前的检索技术明显跟不上步伐,因此对于快速模糊检索文档的需求越来越高。目前使用模糊检索的通常是一些专业的搜索公司,例如百度、谷歌。然而这些专业的搜索公司通常是面向网页的,并且检索系统的规模非常庞大和复杂,不能满足中小规模的检索需求。而目前中小规模的检索服务通常是基于lucene。然而,基于lucene的检索服务虽然简单小巧,但是由于是基于磁盘操作,索引重建费时,搜索速度不够快,即使固态硬盘技术使之有了提高。因此,目前急需一种快速的模糊检索方法。技术实现要素:本发明实施例提供一种文档存储、检索方法及装置,用以解决现有技术中中小规模的检索服务效率低的问题。为实现上述发明目的,本发明采用下述的技术方案:依据本发明的一个方面,提供一种文档存储方法,包括如下步骤:提取文档的关键字;根据所述文档的内容生成标识信息;获取所述文档的存储信息;将所述关键字与所述文档标识的键值对、所述文档标识与所述存储信息的键值对作为所述文档的索引存储于数据库中。进一步地,所述提取文档的关键字,具体包括:对文档内容进行分词处理,计算分词后每个词在文档内容中的权值;筛选出权值不小于第一预设阈值的词语,所述词语即为所述文档的关键字。进一步地,所述数据库包括内存数据库以及mysql数据库;其中,所述内存数据库存储访问热度大于第二预设阈值的文档的索引;所述mysql数据库存储所有文档的索引。进一步地,所述方法还包括:根据所述访问热度对所述数据库存储的索引进行调整;当所述内存数据库中文档的访问热度小于或等于第二预设阈值时,则将所述文档的索引删除;当所述mysql数据库中文档的访问热度大于第二预设阈值时,则将所述文档的索引存储至所述内存数据库中。进一步地,所述访问热度的计算公式为:N=t+hits*a1+{w(key1)+w(key2)+…+w(keyn)}其中,N为所述访问热度;t为所述文档的最近访问时间;w(keyn)为检索内容关键字keyn的热度;hits为所述文档的访问次数;a1为第一调整系数。依据本发明的一个方面,提供一种文档检索方法,基于上述的文档存储方法存储的数据库进行检索,所述文档检索方法包括:提取检索内容关键字;根据所述数据库中存储的关键字与文档标识键值对,查找所述检索内容关键字所对应的目标文档标识;根据所述数据库中的存储文档标识与存储信息键值对,查找所述目标文档标识对应的存储信息,并根据所述存储信息获取目标文档。进一步地,所述提取检索内容关键字,具体包括:对所述检索内容进行分词,根据预先存储的语料信息获取分词后每个词语的权值;筛选出权值不小于第三预设阈值的词语,所述词语即为所述检索内容关键字。进一步地,所述查找检索内容关键字所对应的目标文档标识,具体包括:判断所述检索内容中是否包括符号信息,当所述检索内容中包括符号信息时,提取检索内容中的符号信息,并识别所述符号信息的表达含义;根据所述表达含义确定所述检索内容关键字间的逻辑关系;根据所述检索内容关键字间的逻辑关系,对检索内容关键字所对应的文档标识进行筛选,筛选后的文档标识即为所述目标文档标识。进一步地,所述方法还包括:根据所述目标文档标识获取目标文档的缓存信息;其中,所述缓存信息包括检索内容关键字的热度和所述检索内容关键字在所述目标文档中出现次数;根据所述目标文档的缓存信息计算所述目标文档与所述检索内容关键字的相关度;根据所述相关度对所述目标文档进行排序。进一步地,所述相关度的计算公式为:Q={W(key1)*n1+W(key2)*n2+….+W(keyi)*ni}*a2其中,Q为所述相关度;W(keyi)为检索内容关键字keyi的热度;ni为所述检索内容关键字keyi在目标文档的出现次数;a2为第二调整系数。进一步地,当所述数据库包括内存数据库和mysql数据库时;首先从所述内存数据库中获取检索文档的索引;若所述内存数据库查找不到所述索引时,从所述mysql数据库中查找。依据本发明的一个方面,提供一种文档存储装置,包括:提取单元,用于提取文档的关键字;生成单元,用于根据所述文档的内容生成标识信息;获取单元,用于获取所述文档的存储信息;存储单元,用于将所述关键字与所述文档标识的键值对、所述文档标识与所述存储信息的键值对作为所述文档的索引存储于数据库中。进一步地,所述提取单元具体用于:对文档内容进行分词处理,计算分词后每个词在文档内容中的权值;筛选出权值不小于第一预设阈值的词语,所述词语即为所述文档的关键字。进一步地,所述数据库包括内存数据库以及mysql数据库;其中,所述内存数据库存储访问热度大于第二预设阈值的文档的索引;所述mysql数据库存储所有文档的索引。进一步地,所述装置还包括调整单元,用于根据所述访问热度对所述数据库存储的索引进行调整;当所述内存数据库中文档的访问热度小于或等于第二预设阈值时,则将所述文档的索引删除;当所述mysql数据库中文档的访问热度大于第二预设阈值时,则将所述文档的索引存储至所述内存数据库中。进一步地,所述调整单元计算所述访问热度的公式为:N=t+hits*a1+{w(key1)+w(key2)+…+w(keyn)}其中,N为所述访问热度;t为所述文档的最近访问时间;w(keyn)为检索内容关键字keyn的热度;hits为所述文档的访问次数;a1为第一调整系数。依据本发明的一个方面,提供一种文档检索装置,基于上述的文档存储装置进行检索,所述文档检索装置包括:提取模块,用于提取检索内容关键字;第一查找模块,用于根据所述文档存储装置存储的关键字与文档标识键值对,查找所述检索内容关键字所对应的目标文档标识;第二查找模块,用于根据所述文档存储装置存储的文档标识与存储信息键值对,查找所述目标文档标识对应的存储信息,并根据所述存储信息获取目标文档。进一步地,所述提取模块具体用于:对所述检索内容进行分词,根据预先存储的语料信息获取分词后每个词语的权值;筛选出权值不小于第三预设阈值的词语,所述词语即为所述检索内容关键字。进一步地,所述第一查找模块具体用于:判断所述检索内容中是否包括符号信息,当所述检索内容中包括符号信息时,提取检索内容中的符号信息,并识别所述符号信息的表达含义;根据所述表达含义确定所述检索内容关键字间的逻辑关系;根据所述检索内容关键字间的逻辑关系,对检索内容关键字所对应的文档标识进行筛选,筛选后的文档标识即为所述目标文档标识。进一步地,所述装置还包括排序模块,具体用于:根据所述目标文档标识获取目标文档的缓存信息;其中,所述缓存信息包括检索内容关键字的热度和所述检索内容关键字在所述目标文档中出现次数;根据所述目标文档的缓存信息计算所述目标文档与所述检索内容关键字的相关度;根据所述相关度对所述目标文档进行排序。进一步地,所述排序模块计算相关度的公式为:Q={W(key1)*n1+W(key2)*n2+….+W(keyi)*ni}*a2其中,Q为所述相关度;W(keyi)为检索内容关键字keyi的热度;ni为所述检索内容关键字keyi在目标文档的出现次数;a2为第二调整系数。进一步地,当所述文档存储装置包括内存数据库和mysql数据库时,所述第一查找模块首先从所述内存数据库中获取检索文档的索引;若所述内存数据库查找不到所述索引时,从所述mysql数据库中查找。本发明具有以下有益效果:本发明实施例所提供的文档存储、检索方法及装置,对数据存储结构进行了优化,在数据库中建立文档的关键字与文档标识的键值对、文档标识与存储信息的键值对。根据文档的关键字、文档标识、存储信息之间的对应关系,可以检索到对应的文件信息,从而实现检索目的。本发明中通过将文档内容关键字作为文档信息的检索信息,而非文件名称,满足了文档模糊检索的需求。此外,通过采用键值对的形式存储文档信息,结构简单,可以满足中小公司对于模糊检索需求,同时有效提高检索的效率。上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例中文档存储方法的流程图;图2为本发明一具体实施例中文档存储方法的时序流程图;图3为本发明实施例中文档检索方法的流程图;图4为本发明一具体实施例的文档检索方法的时序流程图;图5为本发明实施例中文档存储装置的结构框图;图6为本发明实施例中文档检索装置的结构框图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。实施例1本发明实施例提供一种文档存储方法,参见图1,具体包括如下步骤:步骤101,提取文档的关键字。在该步骤中,在提取文档的关键字时,对文档内容进行分词处理,计算分词后每个词在文档内容中的权值;筛选出权值不小于第一预设阈值的词语,词语即为文档的关键字。具体地,可以利用分词器将文档内容切割为一个个独立的词语。对于分词器已经为非常成熟的技术,因此本发明采用现有的分词器即可实现分词处理,例如ICTCLAS(InstituteofComputingTechnology,ChineseLexicalAnalysisSystem,汉语词法分析系统)、HTTPCWS(HTTPChineseWordSegmentation,基于HTTP的中文分词系统)。在除了进行分词工作外,还需要去除查询内容中无意义或者重要度较低的一些词语,例如“啊”、“的”等无特殊意思的词,以达到消除干扰的目的,提高检索精度。具体地,根据每个分词后的词语在整个文档中的权值确定该词语重要度。对于确定词语重要度的可以采用TF-IDF函数或者对数函数等进行计算。具体的计算过程已属于本领域技术人员所熟知的技术,这里不再赘述。步骤102,根据文档的内容生成文档标识。在该步骤中,文档标识采用哈希值Hash表示。hash是根据文档的内容的数据通过逻辑运算得到的数值,不同的文档(即使是相同的文档名)得到的hash值是不同的,所以hash值就成了每一个文档的标识。对于哈希值的生成过程已属于本领域技术人员所熟知的技术,常用的算法包括MD4、MD5、SHA-1等,这里不再进行赘述。步骤103,获取文档的存储信息。可选地,文档的存储信息包括文档名、创建日期、修改日期、版本信息、存储路径以及文档大小等。步骤104,将关键字与文档标识的键值对、文档标识与存储信息的键值对作为文档的索引存储于数据库中。在该步骤中,文档的索引具体的存储形式采用键值对形式。键值对的存储方式结构简单,对数据存储结构进行了优化,可以有效满足中小企业的检索需求,同时提供检索的效率。具体地,数据库包括内存数据库以及mysql数据库;其中,内存数据库中存储访问热度大于第二预设阈值的文档的索引;mysql数据库则存储所有文档的索引。本发明通过使用内存数据库配合mysql数据库,对存储的文档的索引进行冷热分离,提高检索的速度及效率。进一步地,在检索时,首先在内存数据库中检索,再从mysql数据库中检索。这样基于内存访问速度较快的优势,优先从内存数据库中检索访问热度较高的文档,可以有效提高检索的效率,同时还可以有效避免lucene检索过程中的反复磁盘操作的问题。进一步地,在检索过程中需要根据访问热度对数据库存储的索引进行更新:当内存数据库中文档的访问热度小于或等于第二预设阈值时,则将该文档的索引删除;当mysql数据库中文档的访问热度大于第二预设阈值时,则将该文档的索引存储至内存数据库中。其中,当访问热度小于或等于第二预设阈值时,将索引从内存数据库删除淘汰。对于从内存中淘汰的数据并不是不需要了,而是暂时访问频度低,重要度下降,因此淘汰的文档中与访问热度相关的信息(文档的最近访问时间、访问次数等信息,后文中关于数据库的存储结构中有介绍)需重新写入mysql数据库中,对mysql数据库中存储的文档的访问热度的相关信息进行更新。基于上述可知,内存数据库所处理的数据通常是“短暂”的,即有一定时间有更新,过时则有新的数据产生。基于内存数据数据读写速度快的优势,通过处理热度高的索引信息,可以有效提高数据访问速度,提高应用的性能。而mysql数据库处理永久、稳定的数据,处理实时数据就相对少一些,保证数据的可靠性和稳定性。具体地,访问热度的计算公式如下:N=t+hits*a1+{w(key1)+w(key2)+…+w(keyn)}其中,N为访问热度;t为文档的最近访问时间;hits为访问次数;w(keyn)为文档包括关键字keyn时,而在检索执行过程中关键字keyn作为检索内容关键字时,对应的热度值。该热度信息可以为检索次数、检索频率等检索相关的权值信息,也可以为语料库中关键字的权值信息,这里不做限定。a1为第一调整系数。对于第一调整系数,根据大量的检索结果进行确定。在实际检索过程中,可以根据检索需要进行调整。需要说明的是,本发明实施例中,对于步骤101、步骤102及步骤103的顺序仅用于解释说明,不做具体的限定。任何对于步骤101、步骤102及步骤103的执行顺序的调整,都在本发明的保护范围之内。图2为本发明一个具体实施例中文档存储方法的时序流程图,具体包括如下步骤:步骤201,打开文档,提取文档的内容。步骤202,对文档的内容进行分词处理,计算分词后每个词汇在该文档中的权重值。在给定的阈值范围内,根据权重值去掉重要度低的关键字。步骤203,根据文档内容生成哈希值。步骤204,将文档的哈希值、存储信息以key/value的形式,分别保存至内存数据库和mysql数据库中。步骤205,将文档关键字、hash值以key/value的形式分别存入内存数据库和mysql数据库中。步骤206,将文档按照存储路径存储到指定位置,存储流程结束。实施例2本发明实施例所提供的文档检索方法,采用模糊检索的方式,根据实施例1中的文档存储方法中数据库建立的文档的索引来检索文档,因此,在数据库中预先存储包括关键字与文档标识键值对、文档标识与存储信息键值对的文档索引。参见图3,本实施例所提供的文档检索方法,具体包括步骤:步骤301,提取检索内容关键字。在该步骤中,用户输入要检索的内容,可能是某个确定的词,也有可能是句子,也可能检索表达式。其中,首先对检索内容进行分词处理。实施例1中已经提到具体分词处理实现方式,这里不再进行说明。接着对检索内容进行分词后,需要获取分词后每个词语的权值。其中,在数据库中预先设置了所有词语的语料信息,包含词语及该词语相关信息,例如数据表项及权值信息,具体的存储形式可以参见表1。根据该语料信息直接查询分词词语的权值信息,并筛选出权值不小于第三预设阈值的词语作为检索内容关键字。词语编码数据表项权值W表1步骤302,根据数据库中存储的关键字与文档标识键值对,查找检索内容关键字所对应的目标文档标识。其中,数据库中预先存储了文档的关键字与文档标识的键值对。在进行查找时,判断当检索内容中是否包含符号信息时:当检索内容中不包含符号信息时,根据该键值对即可获取检索内容关键字对应的文档标识即为目标文档标识。当检索内容中包含符号信息时,需要对检索到的关键字对应的文档标识做进一步的筛选。具体包括:步骤3021,提取检索内容中的符号信息,并识别符号信息的表达含义。在该步骤中,检索内容通常采用检索表达式的形式。例如,军舰+汽车-航母。表达式中的特殊符号信息。本发明实施例中,“+”代表“与”逻辑关系;空格代表“或”逻辑,不带任何特殊符号表示与,“-”代表“非”逻辑关系。步骤3022,根据表达含义确定关键字间的逻辑关系。举例说明,检索的表达式是:军舰+汽车-航母;即在文档中搜索的必须有军舰、汽车,并且不能有航母的文档;如果检索的表达式是军舰汽车,那么搜索内容为军舰、汽车两个词汇中的任何一个或两个全都存在的文档。步骤3023,根据关键字间的逻辑关系,对关键字所对应的文档标识进行筛选,筛选后的文档标识即为目标文档标识。举例说明,检索的关键字:军舰+汽车-航母。获取含军舰这个关键字的文档标识集;作为一个文档序列f1;检索含有汽车关键字的文档序列f2和含有航母关键字的文档序列f3。在筛选时,首先检索f1中是否有f3中检索出的文档hash,从f1中去除f3中含有的项目,对f2做同样的处理操作,从而生成f1`和f2`;取f1`和f2`中的数据结果进行取交集操作,合并为序列f,筛选完成。进一步地,数据库包括内存数据库以及mysql数据库。首先从内存数据库中查找索引信息;若内存数据库查找不到文档的索引时,从mysql数据库中检索。本发明中通过采用内存数据库存储索引信息,可以有效提高检索的速度,同时还可以有效避免lucene检索过程中的反复磁盘操作的问题。步骤303,根据数据库中的存储文档标识与存储信息键值对,查找目标文档标识对应的存储信息,并根据存储信息获取目标文档。当获取关键字对应哈希值后,根据数据库中存储的哈希值-存储信息键值对获取每个哈希值对应的存储信息,并将该文档存储信息返回给用户。具体地文档存储信息的存储结构,参见表2,表名为_file_index。Index为文档哈希值对应的存储信息指向。文档名创建日期修改日期版本信息存储路径文档大小表2用户根据具体的文档名、创建日期、版本信息、存储路径、文档大小等信息确定是否符合检索要求。当确定后,选取某一文档的存储信息,并根据该存储信息从文档的存储位置中提取文档内容。进一步地,该文档检索方法还包括:根据目标文档标识获取目标文档的缓存信息;其中,缓存信息包括检索内容关键字的热度和检索内容关键字在目标文档中出现次数;根据目标文档的缓存信息计算目标文档与检索内容关键字的相关度;根据相关度对目标文档进行排序。具体地,文档缓存信息包括检索内容关键字的热度以及检索内容关键字在目标文档的出现次数。两个参数信息作为文档的属性信息与文档标识一同存储至数据库中。数据库中对于文档标识的存储结构参见表3。表3与表1相对应的存储,例如表1中存储的词语信息为测试,则表3对应的表名为_tb_ceshi。表3进一步地,根据检索内容关键字热度以及关键字在文档中的出现次数对目标文档的相关度计算,公式如下:Q={W(key1)*n1+W(key2)*n2+….+W(keyi)*ni}*a2其中,Q为相关度;W(keyi)为文档包括关键字keyi时,而在检索过程中关键字keyi作为检索内容关键字时,对应的热度值;n为检索内容关键字keyi在目标文档的出现次数;a2为第二调整系数,与第一调整系数类似,根据大量的检索结果进行确定。在实际检索过程中,可以根据检索需要进行调整。参见图4,本发明提供了一具体实施例的文档检索方法的时序流程图,具体包括如下步骤:步骤401,对该输入的查询内容进行分词,计算分词后关键字的权值,对小于阈值的关键字进行排除;步骤402,建立关键字的逻辑表达式,处理与、或、非等逻辑关系;步骤403,根据关键字检索文档的哈希值;步骤404,根据生成的逻辑表达式对获取的哈希值进一步筛选;步骤405,对生成检索结果文档按照相关度的权重值进行计算,获取排序结果;步骤406,根据结果hash列表,查询文档存储信息,返回给用户;步骤407,用户根据搜索结果,选取指定文档信息,提取文档信息,检索流程完毕。实施例3本发明实施例还提供了一种文档存储装置,如图5所示,包括:提取单元,用于提取文档的关键字;生成单元,用于根据文档的内容生成标识信息;获取单元,用于获取文档的存储信息;存储单元,用于将关键字与文档标识的键值对、文档标识与存储信息的键值对作为文档的索引存储于数据库中。进一步地,提取单元具体用于:对文档内容进行分词处理,计算分词后每个词在文档内容中的权值;筛选出权值不小于第一预设阈值的词语,词语即为文档的关键字。进一步地,数据库包括内存数据库以及mysql数据库;其中,内存数据库存储访问热度大于第二预设阈值的文档的索引;mysql数据库存储所有文档的索引。进一步地,装置还包括调整单元,用于根据访问热度对数据库存储的索引进行调整;当内存数据库中文档的访问热度小于或等于第二预设阈值时,则将文档的索引删除;当mysql数据库中文档的访问热度大于第二预设阈值时,则将文档的索引存储至内存数据库中。进一步地,调整单元计算访问热度的公式为:N=t+hits*a1+{w(key1)+w(key2)+…+w(keyn)}其中,N为访问热度;t为文档的最近访问时间;w(keyn)为文档包括关键字keyn时,而在检索过程中关键字keyn作为检索内容关键字时,对应的热度值;hits为文档的访问次数;a1为第一调整系数。对于装置实施例而言,由于其与方法实施例1基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。实施例4本发明提供一种文档检索装置,基于实施例3中的文档存储装置进行检索,包括:提取模块,用于提取检索内容关键字;第一查找模块,用于根据文档存储装置存储的关键字与文档标识键值对,查找检索内容关键字所对应的目标文档标识;第二查找模块,用于根据文档存储装置存储的文档标识与存储信息键值对,查找目标文档标识对应的存储信息,并根据存储信息获取目标文档。进一步地,提取模块具体用于:对检索内容进行分词,根据预先存储的语料信息获取分词后每个词语的权值;筛选出权值不小于第三预设阈值的词语,词语即为检索内容关键字。进一步地,第一查找模块具体用于:判断检索内容中是否包括符号信息,当检索内容中包括符号信息时,提取检索内容中的符号信息,并识别符号信息的表达含义;根据表达含义确定关键字间的逻辑关系;根据关键字间的逻辑关系,对关键字所对应的文档标识进行筛选,筛选后的文档标识即为目标文档标识。进一步地,装置还包括排序模块,具体用于:根据目标文档标识获取目标文档的缓存信息;其中,缓存信息包括检索内容关键字的热度和检索内容关键字在目标文档中出现次数;根据目标文档的缓存信息计算目标文档与检索内容关键字的相关度;根据相关度对目标文档进行排序。进一步地,排序模块计算相关度的公式为:Q={W(key1)*n1+W(key2)*n2+….+W(keyi)*ni}*a2其中,Q为相关度;W(keyi)为文档包括关键字keyi时,而在检索过程中关键字keyi作为检索内容关键字时,对应的热度值;ni为检索内容关键字keyi在目标文档的出现次数;a2为第二调整系数。进一步地,当文档存储装置包括内存数据库和mysql数据库时,第一查找模块首先从内存数据库中获取检索文档的索引;若内存数据库查找不到索引时,从mysql数据库中查找。对于装置实施例而言,由于其与方法实施例2基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。虽然通过实施例描述了本申请,本领域的技术人员知道,本申请有许多变形和变化而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1