CN113535642A - 一种文件搜索方法及计算设备 - Google Patents
一种文件搜索方法及计算设备 Download PDFInfo
- Publication number
- CN113535642A CN113535642A CN202110896464.5A CN202110896464A CN113535642A CN 113535642 A CN113535642 A CN 113535642A CN 202110896464 A CN202110896464 A CN 202110896464A CN 113535642 A CN113535642 A CN 113535642A
- Authority
- CN
- China
- Prior art keywords
- file
- index
- search
- search result
- client
- 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 78
- 230000004048 modification Effects 0.000 claims abstract description 74
- 238000012986 modification Methods 0.000 claims abstract description 74
- 238000004891 communication Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 8
- 238000013500 data storage Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000007723 transport mechanism Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000004044 response 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/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- 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
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)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种文件搜索方法,在计算设备的操作系统中执行,包括:接收客户端对文件的搜索请求,从搜索请求中获取搜索信息;基于搜索信息从索引列表中查找相关联的一个或多个第一索引;确定每个第一索引对应的文件的修改时间是否改变;对于每个第一索引,如果第一索引对应的文件的修改时间未改变,则将第一索引作为第一搜索结果;如果第一索引对应的文件的修改时间改变,则基于修改时间改变的文件来更新索引列表,并基于搜索信息从更新后的索引列表中查找相关联的一个或多个第二索引,作为第二搜索结果;以及基于第一搜索结果和第二搜索结果得到最终搜索结果,并将所述最终搜索结果返回至客户端。本发明还公开了相应的计算设备。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种文件搜索方法及计算设备。
背景技术
文件管理器是计算机操作系统的必备应用之一,而文件检索是用户在文件管理器经常会使用的功能。全文检索的实现,是通过预先读取文件内容,基于读取的文件内容来创建索引,当用户查询关键字的时候,基于关键字来搜索索引,并返回搜索结果。
目前,一般是利用Lucene搜索框架来建立索引,搜索流程主要分为以下几步:1、用户输入查询语句;2、对查询语句进行词法分析、语法分析以及语言处理;3、搜索索引,得到符合语法树的文档;4、根据得到的文档和查询语句的相关性,对结果进行排序。基于以上搜索流程,当文件被修改或者有新增文件的情况下,搜索结果不准确。
另外,现有的搜索引擎包括Solr、ElasticSearch、Deepin anything等。Deepinanything是基于UOS内核的内存搜索引擎。Solr、ElasticSearch是基于java编写并基于Lucene库的搜索引擎,而在MIPS平台上,JAVA虚拟机的运行效率不高。另外,Solr是实时建立索引,有时会产生IO阻塞,导致效率低,并且,当不断增加数据的时候,搜索效率会变低。
基于此,需要一种文件搜索方法,以解决上述技术方案中存在的搜索结果不准确、搜索效率低的问题。
发明内容
为此,本发明提供一种文件搜索方法,以力图解决或者至少缓解上面存在的问题。
根据本发明的一个方面,提供了一种文件搜索方法,在计算设备的操作系统中执行,所述方法包括:接收客户端对文件的搜索请求,从所述搜索请求中获取搜索信息;基于所述搜索信息从索引列表中查找相关联的一个或多个第一索引;确定每个第一索引对应的文件的修改时间是否改变;对于每个第一索引,如果第一索引对应的文件的修改时间未改变,则将所述第一索引作为第一搜索结果;如果第一索引对应的文件的修改时间改变,则基于修改时间改变的文件来更新索引列表,并基于所述搜索信息从更新后的索引列表中查找相关联的一个或多个第二索引,将一个或多个第二索引作为第二搜索结果;以及基于所述第一搜索结果和第二搜索结果得到最终搜索结果,并将所述最终搜索结果返回至客户端。
可选地,在根据本发明的文件搜索方法中,将所述最终搜索结果返回至客户端的步骤包括:获取所述第一搜索结果与第二搜索结果的并集,作为最终搜索结果;将所述最终搜索结果中的每个索引对应的文件返回至客户端。
可选地,在根据本发明的文件搜索方法中,将所述最终搜索结果返回至客户端的步骤包括:将第一搜索结果中的每个第一索引对应的文件返回至客户端;从第二搜索结果中去除与第一搜索结果相重复的第二索引,并将去重后的一个或多个第二索引对应的文件返回至客户端。
可选地,在根据本发明的文件搜索方法中,将所述最终搜索结果返回至客户端的步骤包括:基于所述索引列表确定与所述最终搜索结果中的每个索引相关联的一个或多个文件的描述文档,所述描述文档中包括文件的描述信息;将所述最终搜索结果中的每个索引对应的文件的描述信息返回至客户端,以便在客户端显示每个索引对应的文件的描述信息。
可选地,在根据本发明的文件搜索方法中,确定每个第一索引对应的文件的修改时间是否改变的步骤还包括:如果每个第一索引对应的文件的修改时间均未改变,则将所述第一搜索结果返回至客户端。
可选地,在根据本发明的文件搜索方法中,所述索引列表为倒排索引列表,所述倒排索引列表中包括多个索引,所述索引为词汇单元;其中,每个索引分别关联一个或多个文件的描述文档,所述描述文档中包括文件名、文件路径、修改时间、文件内容中的一种或多种描述信息。
可选地,在根据本发明的文件搜索方法中,在接收客户端对文件的搜索请求之前,包括步骤:获取多个文件;基于每个文件创建相应的描述文档,所述描述文档包括一个或多个域,其中,每个域包括所述文件的路径、修改时间以及与所述域相对应的文件内容;基于多个文件对应的描述文档来创建索引列表。
可选地,在根据本发明的文件搜索方法中,基于多个文件对应的描述文档来创建索引列表的步骤包括:基于多个描述文档中的域的文件内容提取多个词汇单元,并基于每个词汇单元创建相应的索引,以便生成倒排索引列表。
可选地,在根据本发明的文件搜索方法中,基于修改时间改变的文件来更新索引列表的步骤包括:从计算设备中获取与所述第一索引相对应的修改后的文件;基于所述修改后的文件更新相应的描述文档;基于所述更新后的描述文档来更新索引列表。
可选地,在根据本发明的文件搜索方法中,如果第一索引对应的文件的修改时间改变,则还包括步骤:遍历每个文件,判断每个文件的修改时间是否改变;如果文件的修改时间改变,则确定该文件被修改,并获取修改后的文件;以及基于所述修改后的文件更新相应的描述文档,并基于所述更新后的描述文档来更新索引列表。
可选地,在根据本发明的文件搜索方法中,还包括步骤:判断是否存在新增文件;如果存在新增文件,则获取所述新增文件,基于所述新增文件来创建新的描述文档,并基于所述新的描述文档来更新索引列表。
可选地,在根据本发明的文件搜索方法中,在基于每个文件创建相应的描述文档之前,还包括步骤:获取多个文件;确定每个文件的文件类型,并调用与文件类型相对应的解析器来对文件进行解析,以生成字符串内容。
可选地,在根据本发明的文件搜索方法中,确定每个文件的文件类型的步骤包括:确定每个文件是否指定文件类型,如果指定文件类型,则确定文件类型为指定的文件类型;如果未指定文件类型,则根据所述文件的扩展名确定文件类型;如果根据文件的扩展名不能确定文件类型,则根据文件内容来确定文件类型。
根据本发明的一个方面,提供了一种计算设备,包括:至少一个处理器;以及存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如上所述的文件搜索方法的指令。
根据本发明的一个方面,提供了一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如上所述方法。
根据本发明的技术方案,提供了一种文件搜索方法,在根据用户的搜索信息进行第一次搜索索引后,通过判断第一搜索结果中的每个第一索引对应的文件的修改时间是否改变,当修改时间改变时,根据修改时间改变后的文件来更新索引列表,并再次进行索引搜索,最终综合两次搜索结果向用户返回最终搜索结果。这样,能够确保返回给用户的最终搜索结果更加准确、可靠,提高了对文件搜索的准确性,而且,基于第一搜索结果中的第一索引进行有针对性性地检查文件的修改时间改变的文件,这样,有利于提升更新索引列表、对文件进一步搜索的效率。可见,根据本发明的技术方案,不仅能够确保搜索结果的准确性,而且搜索效率高。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的计算设备100的示意图;
图2示出了根据本发明一个实施例的文件搜索方法200的流程图;
图3示出了根据本发明一个实施例的文件搜索方法的交互示意图;以及
图4示出了根据本发明一个实施例的描述文档的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的计算设备100的示意图。
如图1所示,在基本的配置102中,计算设备100典型地包括系统存储器106和一个或者多个处理器104。存储器总线108可以用于在处理器104和系统存储器106之间的通信。
取决于期望的配置,处理器104可以是任何类型的处理,包括但不限于:微处理器(UP)、微控制器(UC)、数字信息处理器(DSP)或者它们的任何组合。处理器104可以包括诸如一级高速缓存110和二级高速缓存112之类的一个或者多个级别的高速缓存、处理器核心114和寄存器116。示例的处理器核心114可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器118可以与处理器104一起使用,或者在一些实现中,存储器控制器118可以是处理器104的一个内部部分。
取决于期望的配置,系统存储器106可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。系统存储器106可以包括操作系统120、一个或者多个应用122以及程序数据124。在一些实施方式中,应用122可以布置为在操作系统上由一个或多个处理器104利用程序数据124执行指令。
计算设备100还可以包括储存接口总线134。储存接口总线134实现了从储存设备132(例如,可移除储存器136和不可移除储存器138)经由总线/接口控制器130到基本配置102的通信。操作系统120、应用122以及数据124的至少一部分可以存储在可移除储存器136和/或不可移除储存器138上,并且在计算设备100上电或者要执行应用122时,经由储存接口总线134而加载到系统存储器106中,并由一个或者多个处理器104来执行。
计算设备100还可以包括有助于从各种接口设备(例如,输出设备142、外设接口144和通信设备146)到基本配置102经由总线/接口控制器130的通信的接口总线140。示例的输出设备142包括图形处理单元148和音频处理单元150。它们可以被配置为有助于经由一个或者多个A/V端口152与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口144可以包括串行接口控制器154和并行接口控制器156,它们可以被配置为有助于经由一个或者多个I/O端口158和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备146可以包括网络控制器160,其可以被布置为便于经由一个或者多个通信端口164与一个或者多个其他计算设备162通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以是这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中以编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
计算设备100可以实现为包括桌面计算机和笔记本计算机配置的个人计算机。当然,计算设备100也可以实现为小尺寸便携(或者移动)电子设备的一部分,这些电子设备可以是诸如蜂窝电话、数码照相机、个人数字助理(PDA)、个人媒体播放器设备、无线网络浏览设备、个人头戴设备、应用专用设备、或者可以包括上面任何功能的混合设备。甚至可以被实现为服务器,如文件服务器、数据库服务器、应用程序服务器和WEB服务器等。本发明的实施例对此均不做限制。
在根据本发明的实施例中,计算设备100的操作系统被配置为执行根据本发明的文件搜索方法200。其中,计算设备100的操作系统中包含执行根据本发明的文件搜索方法200的多条程序指令,使得本发明的文件搜索方法200可以在计算设备100的操作系统中执行。
在根据本发明的实施例中,操作系统例如可以实现为Linux操作系统,但本发明不限于操作系统的具体类型。
根据一个实施例,计算设备100的操作系统上包括一个或多个应用,一个或多个应用可以被配置为执行本发明的文件搜索方法200。一个或多个应用例如包括文件管理器,使得本发明的文件搜索方法200可以在文件管理器中执行。但,应当指出,执行本发明的文件搜索方法200的应用不限于文件管理器。
图2示出了根据本发明一个实施例的文件搜索方法200的流程图。文件搜索方法200可以在计算设备(例如前述计算设备100)的操作系统中执行。操作系统例如可以实现为Linux操作系统,但本发明不限于此。
应当指出,计算设备100中包括数据存储装置,数据存储装置中可以存储各种各样的文件,这里,本发明对文件的具体类型不做限制。
如图2所示,方法200始于步骤S210。
在步骤S210中,接收用户在客户端对文件的搜索请求,从搜索请求中获取用户输入的搜索信息。这里,搜索请求中包括用户输入的搜索信息,搜索信息例如为用户输入的关键字。
在一个实施例中,计算设备100的系统桌面上适于呈现文件搜索界面,使得用户在客户端可以基于文件搜索界面与操作系统进行通信。具体地,用户可以在文件搜索界面请求搜索文件,例如,用户通过在文件搜索界面上的搜索框中输入相应的搜索信息(关键字),基于搜索信息向计算设备的操作系统发送对文件的搜索请求。随后,操作系统可以响应于用户的搜索请求,获取用户输入的搜索信息。
图3示出了根据本发明一个实施例的文件搜索方法的交互示意图。如图3所示,用户可以在文件搜索界面输入相应的搜索关键字,以便操作系统基于关键字搜索相关联的索引。
还应当指出,基于用户在文件搜索界面发送的搜索请求,还可以确定对文件的搜索范围,以便基于相应的搜索范围来搜索文件。这里,搜索范围可以包括一个或多个文件目录。
随后,在步骤S220中,基于搜索信息从当前的索引列表中查找相关联的一个或多个索引,这里,将基于当前的索引列表查找到的与搜索信息相关联的一个或多个索引作为第一索引。也就是说,基于搜索信息(关键字)从当前的索引列表中查找并获取相关联的一个或多个第一索引。
应当指出,索引列表中包括多个索引,每个索引可以关联一个或多个文件。在操作系统中可以预先建立与每个文件相对应的描述文档,并将文件对应的描述文档与相应的索引建立关联,这样,索引列表中的每个索引可以关联一个或多个文件的描述文档。这里,文件对应的描述文档包括与文件相对应的一种或多种描述信息。
在一个实施例中,索引可以是预先基于文件内容建立的词汇单元,文件对应的描述文档可以包括文件名、文件路径、修改时间、文件内容中的一种或多种描述信息。这样,基于搜索信息查找得到的一个或多个索引即是与搜索信息相关联的一个或多个词汇单元,其中,根据每个索引(词汇单元)可以确定与之相关联的一个或多个文件的描述文档。
随后,在步骤S230中,确定每个第一索引对应的文件的修改时间是否改变。这里,也即是图3中所示的对修改时间的过滤。应当指出,根据索引列表,可以确定与每个第一索引相对应的一个或多个描述文档,从而可以确定描述文档中的文件的修改时间。通过确定与描述文档相对应的文件(即,计算设备的数据存储装置中存储的相应文件)的实际修改时间,判断文件对应的描述文档中的修改时间与相应文件的实际修改时间进行是否一致,可以确定第一索引对应的文件的修改时间是否改变,从而也可以确定文件是否被修改。
在步骤S240中,对于每个第一索引而言,如果确定第一索引对应的文件的修改时间未改变,则将该第一索引作为第一搜索结果。这里,第一搜索结果中可以包含一个或多个第一索引。可以理解,如果一个或多个第一索引对应的文件的修改时间未改变,则将这一个或多个第一索引作为第一搜索结果。也就是说,第一搜索结果是对步骤S220中获取的所有第一索引进行修改时间过滤后得到,第一搜索结果中包含的每个第一索引对应的文件的修改时间未改变。
在步骤S250中,对于每个第一索引而言,如果确定第一索引对应的文件的修改时间改变,可以确定该第一索引对应的文件已被修改,则获取与该第一索引相对应的一个或多个修改后的文件(即修改时间改变的一个或多个文件),基于修改时间改变的一个或多个文件来更新索引列表。随后,基于搜索信息(关键字)从更新后的索引列表中查找相关联的一个或多个索引(第二索引),并将从更新后的索引列表中查找到的与搜索信息相关联的一个或多个第二索引作为第二搜索结果。
最后,在步骤S260中,基于第一搜索结果和第二搜索结果得到最终搜索结果,并将最终搜索结果返回至客户端。
需要说明的是,第二搜索结果中的一个或多个第二索引、与第一搜索结果中的一个或多个第一索引,可能存在一个或多个重复的索引。基于此,可以将第一搜索结果中的一个或多个第一索引、与第二搜索结果中的一个或多个第二索引取并集,获取第一搜索结果与第二搜索结果的并集来作为最终搜索结果。换言之,最终搜索结果包含第一搜索结果中的每个第一索引,并且,包含第二搜索结果中去除与第一搜索结果相重复的索引后的第二索引。
根据本发明的方法200,在根据用户的搜索信息进行第一次搜索索引后,通过判断第一搜索结果中的每个第一索引对应的文件的修改时间是否改变,当修改时间改变时,根据修改时间改变后的文件来更新索引列表,并再次进行索引搜索,最终综合两次搜索结果向用户返回最终搜索结果。这样,能够确保返回给用户的最终搜索结果更加准确、可靠,提高了对文件搜索的准确性,而且,基于第一搜索结果中的第一索引进行有针对性性地检查文件的修改时间改变的文件,这样,有利于提升更新索引列表、对文件进一步搜索的效率。
在一个实施例中,将最终搜索结果返回至客户端,可以将最终搜索结果中的每个索引对应的文件返回至客户端,以便用户查看与搜索信息相关联的每个文件。
在一种实现方式中,如图3所示,在将最终结果返回至客户端时,可以是将第一搜索结果中的每个第一索引对应的文件返回至客户端,并将第二搜索结果中去除与第一搜索结果相重复的索引后,将去重后的一个或多个第二索引对应的文件返回至客户端。也就是说,可以在将第一搜索结果返回至客户端的同时,基于修改时间改变的一个或多个文件来更新索引列表,进而,基于搜索信息(关键字)从更新后的索引列表中查找相关联的一个或多个第二索引,作为第二搜索结果,并且,通过从第二搜索结果中去除与第一搜索结果相重复的第二索引后,将去重后的一个或多个第二索引返回至客户端。
在一个实施例中,在将最终搜索结果返回至客户端时,可以基于索引列表确定与最终搜索结果中的每个索引相关联的一个或多个文件的描述文档,基于描述文档可以获取文件的描述信息。随后,可以将与最终搜索结果中的每个索引相对应的文件的描述信息返回至客户端。这样,可以在客户端的文件搜索界面上显示与最终搜索结果中的每个索引相对应的文件的描述信息,以便用户查看与搜索信息相关联的每个文件的描述信息。并且,用户可以基于与文件相对应的文件路径来获取文件。
还应当指出,如果每个第一索引对应的文件的修改时间均未改变,则直接将第一搜索结果返回至客户端。这里,也即是,将第一搜索结果中的每个第一索引对应的文件返回至客户端,以便用户查看与搜索信息相关联的每个文件。在一种实现方式中,可以将与第一搜索结果中的每个第一索引相对应的文件的描述信息(描述文档中的描述信息)返回至客户端。
根据一个实施例,在接收客户端对文件的搜索请求之前,首先创建索引列表。具体地,通过获取计算设备的数据存储装置中存储的多个文件,随后,分别基于每个文件创建相应的描述文档,即创建与每个文件相对应的描述文档,描述文档中包括与文件相对应的描述信息。
图4示出了根据本发明一个实施例的描述文档的示意图。如图4所示,每个描述文档中可以包括一个或多个域,每个域包括与之相对应的文件的路径(文件绝对路径)、修改时间以及与域相对应的文件内容。
随后,基于所创建的与多个文件相对应的多个描述文档来创建索引列表。这里,通过对每个描述文档的每个域中的文件内容进行分析处理,例如通过从文件内容中提取单词、将字母转为小写、去除标点符号、去除常用词等,可以生成一个或多个词汇单元。这样,最终可以从多个描述文档中的多个域的文件内容中提取得到多个词汇单元。进而,基于每个词汇单元来创建相应的索引,也即是,分别建立与每个词汇单元相对应的索引。最终,基于多个索引来生成倒排索引列表。这里,倒排索引列表中可以包括多个索引,每个索引分别关联有一个或多个文件对应的描述文档。其中,描述文档中可以包括文件名、文件路径、修改时间、文件内容中的一种或多种描述信息。
在一种实现方式中,每个描述文档包括与之唯一相对应的描述文档标识。倒排索引列表中包括多个索引、以及与每个索引相关联的一个或多个描述文档标识。这样,基于倒排索引列表可以确定与每个索引相关联的描述文档标识,根据描述文档标识可以确定相应的描述文档,并可以获取相应的描述文档中的描述信息。
还应当指出,基于预先建立的与每个文件相对应的描述文档可以构成文档库,基于倒排索引列表中的每个索引与文档库中的相应描述文档之间的关联关系,构成了倒排索引结构。基于这种倒排索引结构,当获取用户输入的搜索信息后,可以根据用户输入的搜索信息,在倒排索引列表中搜索查询到与搜索信息相关联的一个或多个索引,并且,基于搜索到的每个索引可以确定与索引相对应的一个或多个文件的描述文档,获取描述文档中的描述信息,基于描述信息中的文件路径可以获取相应的文件。
在一个实施例中,在获取计算设备的数据存储装置中存储的每个文件之后,需要先根据文件类型来对文件进行解析,以生成字符串内容,再根据字符串内容来创建与文件相对应的描述文档。
具体地,确定每个文件的文件类型,这里,首先确定每个文件是否指定文件类型,如果指定文件类型,则确定文件类型为指定的文件类型。如果未指定文件类型,则根据文件的扩展名(后缀)来确定文件类型。在确定文件类型后,可以调用与文件类型相对应的解析器来对文件进行解析,以生成字符串内容。
如果根据文件的扩展名不能确定文件类型,或者,如果在调用解析器对文件进行解析过程中出现格式错误,则,通过检测文件内容,根据文件内容来确定文件类型,进而,调用与所确定的文件类型相对应的解析器,并基于解析器对文件进行解析,以得到相应的字符串内容。
在一种实现方式中,本发明的文件搜索方法200可以基于全文搜索引擎框架LucenePlusPlus来实现。LucenePlusPlus是基于Lucene开源库的C++实现的全文搜索引擎框架,基于该搜索引擎框架不仅能实现全文检索和搜寻,搜索效率高,并且,能够兼容多种不同的硬件平台,解决了Java虚拟机在ARM和MIPS上不能完美运行的问题。
在一种实现方式中,文件类型可以包括DOC、DOCX、XLS、XLSX、PPT、PPTX、RTF、TXT、ZIP、WPS、DOT、ODT、ODS、ODP、HTML、XML等,可见,本发明增加了对WPS文件类型的支持。但,应当指出,本发明不限于以上列举的这些文件类型。通过调用与文件类型相对应的解析器来解析文件,可以将文件内容转化为字符串,例如QString字符串。基于QString字符串可以在C++版本的Lucene库LucenePlusPlus中建立索引。
根据一个实施例,在步骤S250中如果第一索引对应的文件的修改时间改变,基于修改时间改变的文件来更新索引列表可以根据以下方法执行:基于相应的文件路径从计算设备的数据存储装置中获取与第一索引相对应的修改后的文件,基于修改后的文件来更新与文件相对应的描述文档。这里,更新后的描述文档中的每个域包括修改后的文件的路径(文件绝对路径)、修改时间和与域相对应的文件内容。随后,基于更新后的描述文档来更新索引列表。
根据又一个实施例,如果第一索引对应的文件的修改时间改变,则,还可以通过执行以下方法来更新索引列表:遍历计算设备的数据存储装置中存储的每个文件,判断每个文件的修改时间是否改变。具体地,通过确定每个文件对应的描述文档中的修改时间,并确定与描述文档相对应的文件的实际修改时间,判断描述文档中的修改时间是否与计算设备中存储的相应文件的实际修改时间相一致,从而可以确定文件的修改时间是否改变。如果不一致,则确定该文件的修改时间改变;如果一致,则确定该文件的修改时间未改变。
如果文件的修改时间改变,则确定该文件被修改,并获取修改后的文件。随后,基于修改后的文件来更新相应的描述文档,并基于更新后的描述文档来更新索引列表。
另外,在一个实施例中,在遍历每个文件时,还判断是否存在新增文件。如果存在新增文件,则获取新增文件,基于新增文件来创建与新增文件相对应的新的描述文档,并基于新的描述文档来更新索引列表。
应当指出,在又一个实施例中,通过遍历计算设备中存储的所有文件,全盘检查每个文件的修改时间是否改变,并基于检查到的被修改的文件来更新索引列表。这样,基于更新后的索引列表可以更准确、全面地搜索到与搜索信息相关联的目标索引。
在一种实现方式中,各个类型文件对应的解析器包括:
parseRTF[PlainTextExtractor::Implementation]
parseODFOOXML[PlainTextExtractor::Implementation]
parseXLS[PlainTextExtractor::Implementation]
parseDOC[PlainTextExtractor::Implementation]
parsePPT[PlainTextExtractor::Implementation]
parseHTML[PlainTextExtractor::Implementation]
parseIWork[PlainTextExtractor::Implementation]
parseXLSB[PlainTextExtractor::Implementation]
parsePDF[PlainTextExtractor::Implementation]
parseTXT[PlainTextExtractor::Implementation]
parseEML[PlainTextExtractor::Implementation]
parseODFXML[PlainTextExtractor::Implementation]
parseRTFMetadata[PlainTextExtractor::Implementation]
parseODFOOXMLMetadata[PlainTextExtractor::Implementation]
parseXLSMetadata[PlainTextExtractor::Implementation]
parseDOCMetadata[PlainTextExtractor::Implementation]
parsePPTMetadata[PlainTextExtractor::Implementation]
parseHTMLMetadata[PlainTextExtractor::Implementation]
parseIWorkMetadata[PlainTextExtractor::Implementation]
parseXLSBMetadata[PlainTextExtractor::Implementation]
parsePDFMetadata[PlainTextExtractor::Implementation]
parseEMLMetadata[PlainTextExtractor::Implementation]
parseODFXMLMetadata[PlainTextExtractor::Implementation]
另外,WPS文件类型对应的解析器如下:
parseWPS[PlainTextExtractor::Implementation]
parseWPT[PlainTextExtractor::Implementation]
parseET[PlainTextExtractor::Implementation]
parseETT[PlainTextExtractor::Implementation]
parseDPS[PlainTextExtractor::Implementation]
parseDPT[PlainTextExtractor::Implementation]
根据上述与各个类型的文件相对应的解析器,能实现对各个类型的文件进行解析,从而实现对包括WPS文件类型在内的各个类型文件进行全文检索。
根据本发明的文件搜索方法,在根据用户的搜索信息进行第一次搜索索引后,通过判断第一搜索结果中的每个第一索引对应的文件的修改时间是否改变,当修改时间改变时,根据修改时间改变后的文件来更新索引列表,并再次进行索引搜索,最终综合两次搜索结果向用户返回最终搜索结果。这样,能够确保返回给用户的最终搜索结果更加准确、可靠,提高了对文件搜索的准确性,而且,基于第一搜索结果中的第一索引进行有针对性性地检查文件的修改时间改变的文件,这样,有利于提升更新索引列表、对文件进一步搜索的效率。可见,根据本发明的技术方案,不仅能够确保搜索结果的准确性,而且搜索效率高。
A9、如A6-A8中任一项所述的方法,其中,基于修改时间改变的文件来更新索引列表的步骤包括:从计算设备中获取与所述第一索引相对应的修改后的文件;基于所述修改后的文件更新相应的描述文档;基于所述更新后的描述文档来更新索引列表。
A10、如A6-A9中任一项所述的方法,其中,如果第一索引对应的文件的修改时间改变,则还包括步骤:遍历每个文件,判断每个文件的修改时间是否改变;如果文件的修改时间改变,则确定该文件被修改,并获取修改后的文件;以及基于所述修改后的文件更新相应的描述文档,并基于所述更新后的描述文档来更新索引列表。
A11、如A10所述的方法,其中,还包括步骤:判断是否存在新增文件;如果存在新增文件,则获取所述新增文件,基于所述新增文件来创建新的描述文档,并基于所述新的描述文档来更新索引列表。
A12、如A7所述的方法,其中,在基于每个文件创建相应的描述文档之前,还包括步骤:获取多个文件;确定每个文件的文件类型,并调用与文件类型相对应的解析器来对文件进行解析,以生成字符串内容。
A13、如A12所述的方法,其中,确定每个文件的文件类型的步骤包括:确定每个文件是否指定文件类型,如果指定文件类型,则确定文件类型为指定的文件类型;如果未指定文件类型,则根据所述文件的扩展名确定文件类型;如果根据文件的扩展名不能确定文件类型,则根据文件内容来确定文件类型。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的多语言垃圾文本的识别方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。
Claims (10)
1.一种文件搜索方法,在计算设备的操作系统中执行,所述方法包括:
接收客户端对文件的搜索请求,从所述搜索请求中获取搜索信息;
基于所述搜索信息从索引列表中查找相关联的一个或多个第一索引;
确定每个第一索引对应的文件的修改时间是否改变;
对于每个第一索引,如果第一索引对应的文件的修改时间未改变,则将所述第一索引作为第一搜索结果;
如果第一索引对应的文件的修改时间改变,则基于修改时间改变的文件来更新索引列表,并基于所述搜索信息从更新后的索引列表中查找相关联的一个或多个第二索引,将一个或多个第二索引作为第二搜索结果;以及
基于所述第一搜索结果和第二搜索结果得到最终搜索结果,并将所述最终搜索结果返回至客户端。
2.如权利要求1所述的方法,其中,将所述最终搜索结果返回至客户端的步骤包括:
获取所述第一搜索结果与第二搜索结果的并集,作为最终搜索结果;
将所述最终搜索结果中的每个索引对应的文件返回至客户端。
3.如权利要求1或2所述的方法,其中,将所述最终搜索结果返回至客户端的步骤包括:
将第一搜索结果中的每个第一索引对应的文件返回至客户端;
从第二搜索结果中去除与第一搜索结果相重复的第二索引,并将去重后的一个或多个第二索引对应的文件返回至客户端。
4.如权利要求1-3中任一项所述的方法,其中,将所述最终搜索结果返回至客户端的步骤包括:
基于所述索引列表确定与所述最终搜索结果中的每个索引相关联的一个或多个文件的描述文档,所述描述文档中包括文件的描述信息;
将所述最终搜索结果中的每个索引对应的文件的描述信息返回至客户端,以便在客户端显示每个索引对应的文件的描述信息。
5.如权利要求1-4中任一项所述的方法,其中,确定每个第一索引对应的文件的修改时间是否改变的步骤还包括:
如果每个第一索引对应的文件的修改时间均未改变,则将所述第一搜索结果返回至客户端。
6.如权利要求1-5中任一项所述的方法,其中,
所述索引列表为倒排索引列表,所述倒排索引列表中包括多个索引,所述索引为词汇单元;
其中,每个索引分别关联一个或多个文件的描述文档,所述描述文档中包括文件名、文件路径、修改时间、文件内容中的一种或多种描述信息。
7.如权利要求1-6中任一项所述的方法,其中,在接收客户端对文件的搜索请求之前,包括步骤:
获取多个文件;
基于每个文件创建相应的描述文档,所述描述文档包括一个或多个域,其中,每个域包括所述文件的路径、修改时间以及与所述域相对应的文件内容;
基于多个文件对应的描述文档来创建索引列表。
8.如权利要求7所述的方法,其中,基于多个文件对应的描述文档来创建索引列表的步骤包括:
基于多个描述文档中的域的文件内容提取多个词汇单元,并基于每个词汇单元创建相应的索引,以便生成倒排索引列表。
9.一种计算设备,包括:
至少一个处理器;以及
存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如权利要求1-8中任一项所述的方法的指令。
10.一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求1-8中任一项所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110896464.5A CN113535642A (zh) | 2021-08-05 | 2021-08-05 | 一种文件搜索方法及计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110896464.5A CN113535642A (zh) | 2021-08-05 | 2021-08-05 | 一种文件搜索方法及计算设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113535642A true CN113535642A (zh) | 2021-10-22 |
Family
ID=78090584
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110896464.5A Pending CN113535642A (zh) | 2021-08-05 | 2021-08-05 | 一种文件搜索方法及计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113535642A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114661666A (zh) * | 2022-03-03 | 2022-06-24 | 北京城市网邻信息技术有限公司 | 数据搜索方法、装置、设备及存储介质 |
CN116955286A (zh) * | 2023-09-19 | 2023-10-27 | 中孚安全技术有限公司 | 一种文件搜索与分类管理方法、系统及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101178677A (zh) * | 2007-11-09 | 2008-05-14 | 中国科学院计算技术研究所 | 一种计算机文件系统的快照方法 |
CN101520804A (zh) * | 2009-03-20 | 2009-09-02 | 深圳创维-Rgb电子有限公司 | 基于sql数据库的文件检索系统与方法 |
CN102819592A (zh) * | 2012-08-08 | 2012-12-12 | 河海大学 | 一种基于Lucene的桌面搜索系统及方法 |
US20130013587A1 (en) * | 2011-07-08 | 2013-01-10 | Microsoft Corporation | Incremental computing for web search |
-
2021
- 2021-08-05 CN CN202110896464.5A patent/CN113535642A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101178677A (zh) * | 2007-11-09 | 2008-05-14 | 中国科学院计算技术研究所 | 一种计算机文件系统的快照方法 |
CN101520804A (zh) * | 2009-03-20 | 2009-09-02 | 深圳创维-Rgb电子有限公司 | 基于sql数据库的文件检索系统与方法 |
US20130013587A1 (en) * | 2011-07-08 | 2013-01-10 | Microsoft Corporation | Incremental computing for web search |
CN102819592A (zh) * | 2012-08-08 | 2012-12-12 | 河海大学 | 一种基于Lucene的桌面搜索系统及方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114661666A (zh) * | 2022-03-03 | 2022-06-24 | 北京城市网邻信息技术有限公司 | 数据搜索方法、装置、设备及存储介质 |
CN114661666B (zh) * | 2022-03-03 | 2023-01-24 | 北京城市网邻信息技术有限公司 | 数据搜索方法、装置、设备及存储介质 |
CN116955286A (zh) * | 2023-09-19 | 2023-10-27 | 中孚安全技术有限公司 | 一种文件搜索与分类管理方法、系统及装置 |
CN116955286B (zh) * | 2023-09-19 | 2023-12-15 | 中孚安全技术有限公司 | 一种文件搜索与分类管理方法、系统及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3080721B1 (en) | Query techniques and ranking results for knowledge-based matching | |
US9760570B2 (en) | Finding and disambiguating references to entities on web pages | |
US20160275148A1 (en) | Database query method and device | |
US8712758B2 (en) | Coreference resolution in an ambiguity-sensitive natural language processing system | |
AU2008292779B2 (en) | Coreference resolution in an ambiguity-sensitive natural language processing system | |
US9659004B2 (en) | Retrieval device and method | |
US20080033714A1 (en) | Acronym Extraction System and Method of Identifying Acronyms and Extracting Corresponding Expansions from Text | |
US20180181646A1 (en) | System and method for determining identity relationships among enterprise data entities | |
WO2022148055A1 (zh) | 一种文件检索方法及计算设备 | |
US20160292153A1 (en) | Identification of examples in documents | |
US8996358B2 (en) | Entity variant generation and normalization | |
US8423885B1 (en) | Updating search engine document index based on calculated age of changed portions in a document | |
US9092512B2 (en) | Corpus search improvements using term normalization | |
CN113535642A (zh) | 一种文件搜索方法及计算设备 | |
Wu et al. | Searching services" on the web": A public web services discovery approach | |
CN110955662A (zh) | 一种维护数据表关联关系的方法、计算设备及存储介质 | |
CN107220249B (zh) | 基于分类的全文搜索 | |
US20080033953A1 (en) | Method to search transactional web pages | |
JP3851712B2 (ja) | 文書管理システムおよびそのシステムとしてコンピュータを機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
JP2001101184A (ja) | 構造化文書生成方法及び装置及び構造化文書生成プログラムを格納した記憶媒体 | |
JP2778025B2 (ja) | 共起関係辞書の学習方法 | |
CN111444413B (zh) | 一种数据查询方法、装置和计算设备 | |
Sheguri | ENHANCING THE QUEUING PROCESS FOR YIOOP'S SCHEDULER | |
JP2000339342A (ja) | 文書検索方法および文書検索装置 | |
CN117093789A (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 |