一种局域网共享文件索引构建方法及搜索方法与流程

文档序号:16403692发布日期:2018-12-25 20:17阅读:1402来源:国知局
一种局域网共享文件索引构建方法及搜索方法与流程

本发明涉及一种局域网共享文件索引构建方法及搜索方法,属于文件检索技术领域。

背景技术

作为一种简单、高效的文件传递方式,局域网文件共享被广泛应用于各种业务场景。普通计算机基于其使用的系统可以方便的实现局域网文件共享,如windows系统自带文件共享功能,linux系统使用samba服务也可以方便的实现文件共享;手机等移动终端也可以在接入局域网后提供文件共享服务或使用共享文件;带存储功能的路由器等网络设备也能方便的实现局域网内的文件共享。

随着文件数量的增加,如何快速找到需要的文件成为最影响文件共享使用的问题之一。目前,主要通过文件搜索来解决这一问题。

搜索分为索引和搜索两个环节。索引就是遍历共享文件,获取搜索时需要的文件元信息,并将这些信息进行合理的组织和存储。搜索就是基于索引数据对用户请求的文件进行定位。具体的索引和搜索方法有两种:

1)客户端独立维护索引,独立进行搜索。各使用共享文件的客户端,对共享目录进行遍历形成完整的索引数据。索引数据的创建和更新由各客户端独立完成,索引数据也由各客户端独立使用。常用的windows系统自带的文件搜索功能,采用的就是这种方法。

2)服务端统一维护索引,并提供搜索服务。在服务端部署一套专门的索引程序,由该索引程序负责索引的创建和维护。同时,服务端需要提供搜索接口,供客户端进行搜索和获取搜索结果。常用的基于lucene的solr、elasticsearch等采用的是这种方法。

以上的搜索方法能满足某些具体业务场景下的搜索需求,然而在局域网共享文件的搜索这一具体场景下存在以下问题:

1)客户端独立维护索引数据,独立进行搜索。使用这一方法,每一个客户端都需要消耗大量的时间和资源建立和维护一套索引,且当较多用户同时对共享目录进行索引时,共享目录的访问速度会急剧下降。

2)服务端统一维护索引数据,并提供搜索服务。使用这一方法,能够解决每个客户端都需要建立索引的问题,但是服务端需要单独部署和维护,且一旦服务端出现异常,客户端就不能正常使用。



技术实现要素:

本发明所要解决的技术问题是提供一种局域网共享文件索引构建方法,能够解决文件索引时、局域网中客户端需重复维护索引数据造成资源浪费,有效提高文件检索的效率。

本发明为了解决上述技术问题采用以下技术方案:本发明设计了一种局域网共享文件索引构建方法,基于局域网中各客户端对置于局域网共享文件夹目录的索引文件的搜索触发,实现各客户端、共同针对索引文件进行维护与应用;包括目标索引文件创建方法,如下步骤:

步骤a1.客户端判断目标共享文件夹目录是否存在其所对应的索引文件,是则进入步骤a2;否则目标共享文件夹目录存在其所对应的索引文件,无需创建;

步骤a2.初始化m=1,以及初始化临时索引文件为空,并由该客户端应用索引线程,针对目标共享文件夹目录执行如下步骤a2-1至步骤a2-4,获得临时索引文件,然后进入步骤a3;

步骤a2-1.基于当前索引线程所对应共享文件路径下各文件对象的排序,由该客户端遍历获得当前索引线程所对应共享文件路径下第m个文件对象的元信息,并生成对应的索引数据对象,然后进入步骤a2-2;

步骤a2-2.判断当前索引线程所对应共享文件路径下第m个文件对象是否是文件夹,是则由该客户端采用新索引线程,针对该文件夹下的共享文件路径,返回步骤a2-1;否则进入步骤a2-3;

步骤a2-3.将当前索引线程所对应共享文件路径下第m个文件对象、所对应的索引数据对象,加入至临时索引文件当中,然后进入步骤a2-4;

步骤a2-4.判断当前索引线程所对应共享文件路径下是否存在未遍历的文件对象,是则针对当前索引线程所对应共享文件路径下、m的值进行加1更新,并针对当前索引线程所对应共享文件路径,返回步骤a2-1;否则即完成当前索引线程所对应共享文件路径下的遍历,获得临时索引文件;

步骤a3.判断目标共享文件夹目录所对应的索引文件是否被写锁定,是则待该索引文件解锁后,进入步骤a4;否则直接进入步骤a4;

步骤a4.将临时索引文件加入至目标共享文件夹目录所对应的索引文件中,对该索引文件进行更新,并清除临时索引文件。

作为本发明的一种优选技术方案:还包括临时内存的应用,其中,

步骤a2-3.将当前索引线程所对应共享文件路径下第m个文件对象、所对应的索引数据对象,加入至临时内存当中,并判断临时内存是否已满,是则将临时内存中的索引数据对象转移至临时索引文件当中,并进入步骤a2-4;否则直接进入步骤a2-4;

步骤a2-4.判断当前索引线程所对应共享文件路径下是否存在未遍历的文件对象,是则针对当前索引线程所对应共享文件路径下、m的值进行加1更新,并针对当前索引线程所对应共享文件路径,返回步骤a2-1;否则即完成当前索引线程所对应共享文件路径下的遍历,将临时内存中的索引数据对象转移至临时索引文件当中,获得临时索引文件。

作为本发明的一种优选技术方案,还包括基于新增文件的索引文件更新方法,用于客户端针对局域网中目标共享文件夹目录进行如下步骤:

步骤b1.初始化n=1,并由客户端应用增量索引线程,针对目标共享文件夹目录执行如下步骤b1-1至步骤b1-8,若获得临时索引文件,则进入步骤b2;否则即表示目标共享文件夹目录下不存在新增文件,本方法执行结束;

步骤b1-1.基于当前增量索引线程所对应共享文件路径下各文件对象的排序,由该客户端遍历获得当前增量索引线程所对应共享文件路径下第n个文件对象的元信息,并生成对应的索引数据对象,然后进入步骤b1-2;

步骤b1-2.判断当前增量索引线程所对应共享文件路径下第n个文件对象是否是文件夹,是则进入步骤b1-3;否则进入步骤b1-5;

步骤b1-3.由该客户端判断该文件夹的最后修改时间是否晚于局域网共享文件夹目录所对应索引文件的更新时间,是则进入步骤b1-4;否则判定该文件夹中不存在新增文件,并进入步骤b1-7;

步骤b1-4.由该客户端采用新增量索引线程,针对该文件夹下的共享文件路径,返回步骤b1-1;

步骤b1-5.由该客户端判断该文件的访问时间是否晚于局域网共享文件夹目录所对应索引文件的更新时间,是则判定该文件为新增文件,并进入步骤b1-6;否则判定该文件不是新增文件,并进入步骤b1-7;

步骤b1-6.将当前增量索引线程所对应共享文件路径下第n个文件对象、所对应的索引数据对象,加入至临时索引文件当中,然后进入步骤b1-7;

步骤b1-7.判断当前增量索引线程所对应共享文件路径下是否存在未遍历的文件对象,是则针对当前增量索引线程所对应共享文件路径下、n的值进行加1更新,并针对当前增量索引线程所对应共享文件路径,返回步骤b1-1;否则即完成当前增量索引线程所对应共享文件路径下的遍历,并进入步骤b1-8;

步骤b1-8.若存在临时索引文件,即获得临时索引文件;否则即没有获得临时索引文件;

步骤b2.判断目标共享文件夹目录所对应的索引文件是否被写锁定,是则待该索引文件解锁后,进入步骤b3;否则直接进入步骤b3;

步骤b3.将临时索引文件加入至目标共享文件夹目录所对应的索引文件中,对该索引文件进行更新,并清除临时索引文件。

作为本发明的一种优选技术方案:还包括临时内存的应用,其中,

步骤b1-6.将当前增量索引线程所对应共享文件路径下第n个文件对象、所对应的索引数据对象,加入至临时内存当中,并判断临时内存是否已满,是则将临时内存中的索引数据对象转移至临时索引文件当中,并进入步骤b1-7;否则直接进入步骤b1-7;

步骤b1-8.待各个增量索引线程均完成其所对应共享文件路径下的遍历,将临时内存中的索引数据对象转移至临时索引文件当中,若临时索引文件为非空,则该临时索引文件即为目标共享文件夹目录所对应的临时索引文件;否则目标共享文件夹目录不存在其所对应的临时索引文件;

作为本发明的一种优选技术方案,还包括基于删除文件对象的索引文件更新方法,用于客户端完成局域网共享文件夹目录索引文件的更新,如下步骤:

步骤c1.客户端基于局域网共享文件夹目录的索引文件,获取目标文件对象的搜索结果列表,然后进入步骤c2;

步骤c2.由客户端判断目标文件对象的搜索结果列表中目标文件对象是否存在,是表示局域网共享文件夹目录的索引文件无需更新;否则进入步骤c3;

步骤c3.将针对局域网共享文件夹目录的索引文件的读锁升级为写锁,待升级成功后,进入步骤c4;

步骤c4.由客户端将局域网共享文件夹目录的索引文件中目标文件对象的索引数据进行删除,更新索引文件。

与上述相对应,本发明还要解决的技术问题是提供一种基于局域网共享文件索引构建方法的搜索方法,能够解决文件索引时、局域网中客户端需重复维护索引数据造成资源浪费,有效提高了文件检索的效率。

本发明为了解决上述技术问题采用以下技术方案:本发明设计了一种基于局域网共享文件索引构建方法的搜索方法,由客户端根据搜索关键字和搜索范围实现搜索,初始化中间结果列表为空,并包括如下步骤:

步骤d1.由该客户端判断局域网共享文件夹目录的索引文件中、是否存在搜索范围所对应的索引文件,是则加载该搜索范围所对应的索引文件,并进入步骤d2;否则针对该搜索范围所对应的共享文件路径,执行目标索引文件创建方法,然后加载该搜索范围所对应的索引文件,并进入步骤d2;

步骤d2.由该客户端判断该索引文件的更新时间是否晚于该搜索范围根目录的最后修改时间,是则获取该索引文件的索引数据内容,并进入步骤d3;否则针对该搜索范围根目录,执行基于新增文件的索引文件更新方法,然后获取该搜索范围所对应索引文件的索引数据内容,并进入步骤d3;

步骤d3.由该客户端遍历该搜索范围所对应的索引数据内容,针对搜索关键字与索引数据内容进行匹配,并将匹配文件信息加入中间结果列表,然后进入步骤d4;

步骤d4.由客户端判断中间结果列表对应文件是否存在,是则由客户端执行基于删除文件对象的索引文件更新方法,搜索结果为空;否则将中间结果列表中内容加入最终结果列表,获得搜索结果。

本发明所述一种局域网共享文件索引构建方法及搜索方法采用以上技术方案与现有技术相比,具有以下技术效果:

本发明所设计局域网共享文件索引构建方法及搜索方法,针对局域网中共享文件的共享特性,将针对共享文件建立的,由客户端搜索时使用的索引数据进行共享,节省了每个客户端均需维护一套索引数据所耗费的资源;由所有使用搜索功能的客户端共同维护索引数据,分摊索引消耗的时间和资源,减轻单一节点的负荷;使用同步机制访问和更新索引文件,在保证索引数据一致性的同时保证数据的访问效率;由各节点利用共享的索引数据独立完成搜索,在保证索引数据复用的同时,消除了对服务端的依赖。

附图说明

图1是本发明所设计局域网共享文件索引构建方法中目标索引文件创建方法流程图;

图2是本发明所设计局域网共享文件索引构建方法中基于新增文件的索引文件更新方法流程图;

图3是本发明所设计局域网共享文件索引构建方法中基于删除文件对象的索引文件更新方法流程图;

图4是本发明所设计基于局域网共享文件索引构建方法的搜索方法的流程图;

图5是本发明所设计中索引生成与存储示意图。

具体实施方式

下面结合说明书附图对本发明的具体实施方式作进一步详细的说明。

本发明设计了一种局域网共享文件索引构建方法,基于局域网中各客户端对置于局域网共享文件夹目录的索引文件的搜索触发,实现各客户端、共同针对索引文件进行维护与应用;包括目标索引文件创建方法,如图1所示,实际应用当中,执行如下步骤a1至步骤a4。

步骤a1.客户端判断目标共享文件夹目录是否存在其所对应的索引文件,是则进入步骤a2;否则目标共享文件夹目录存在其所对应的索引文件,无需创建。

步骤a2.初始化m=1,以及初始化临时索引文件为空,并由该客户端应用索引线程,针对目标共享文件夹目录执行如下步骤a2-1至步骤a2-4,获得临时索引文件,然后进入步骤a3。

步骤a2-1.基于当前索引线程所对应共享文件路径下各文件对象的排序,由该客户端遍历获得当前索引线程所对应共享文件路径下第m个文件对象的元信息,并生成对应的索引数据对象,然后进入步骤a2-2。

对于每一个文件或文件夹均需要获取其元信息建立索引数据,文件的名称、访问时间、绝对路径是必要信息,文件夹的名称、修改时间、绝对路径是必要信息,其余信息可根据需要获取,如文件大小、类型等。

步骤a2-2.判断当前索引线程所对应共享文件路径下第m个文件对象是否是文件夹,是则由该客户端采用新索引线程,针对该文件夹下的共享文件路径,返回步骤a2-1;否则进入步骤a2-3。

步骤a2-3.将当前索引线程所对应共享文件路径下第m个文件对象、所对应的索引数据对象,加入至临时内存当中,并判断临时内存是否已满,是则将临时内存中的索引数据对象转移至临时索引文件当中,并进入步骤a2-4;否则直接进入步骤a2-4;

步骤a2-4.判断当前索引线程所对应共享文件路径下是否存在未遍历的文件对象,是则针对当前索引线程所对应共享文件路径下、m的值进行加1更新,并针对当前索引线程所对应共享文件路径,返回步骤a2-1;否则即完成当前索引线程所对应共享文件路径下的遍历,将临时内存中的索引数据对象转移至临时索引文件当中,获得临时索引文件。

步骤a3.判断目标共享文件夹目录所对应的索引文件是否被写锁定,是则待该索引文件解锁后,进入步骤a4;否则直接进入步骤a4。

步骤a4.将临时索引文件加入至目标共享文件夹目录所对应的索引文件中,对该索引文件进行更新,并清除临时索引文件。

本发明设计局域网共享文件索引构建方法中,还包括基于新增文件的索引文件更新方法,实际应用当中,如图2所示,用于客户端针对局域网中目标共享文件夹目录,执行如下步骤b1至步骤b3。

步骤b1.初始化n=1,并由客户端应用增量索引线程,针对目标共享文件夹目录执行如下步骤b1-1至步骤b1-8,若获得临时索引文件,则进入步骤b2;否则即表示目标共享文件夹目录下不存在新增文件,本方法执行结束。

步骤b1-1.基于当前增量索引线程所对应共享文件路径下各文件对象的排序,由该客户端遍历获得当前增量索引线程所对应共享文件路径下第n个文件对象的元信息,并生成对应的索引数据对象,然后进入步骤b1-2。

步骤b1-2.判断当前增量索引线程所对应共享文件路径下第n个文件对象是否是文件夹,是则进入步骤b1-3;否则进入步骤b1-5。

步骤b1-3.由该客户端判断该文件夹的最后修改时间是否晚于局域网共享文件夹目录所对应索引文件的更新时间,是则进入步骤b1-4;否则判定该文件夹中不存在新增文件,并进入步骤b1-7。

步骤b1-4.由该客户端采用新增量索引线程,针对该文件夹下的共享文件路径,返回步骤b1-1。

步骤b1-5.由该客户端判断该文件的访问时间是否晚于局域网共享文件夹目录所对应索引文件的更新时间,是则判定该文件为新增文件,并进入步骤b1-6;否则判定该文件不是新增文件,并进入步骤b1-7。

步骤b1-6.将当前增量索引线程所对应共享文件路径下第n个文件对象、所对应的索引数据对象,加入至临时内存当中,并判断临时内存是否已满,是则将临时内存中的索引数据对象转移至临时索引文件当中,并进入步骤b1-7;否则直接进入步骤b1-7;

步骤b1-7.判断当前增量索引线程所对应共享文件路径下是否存在未遍历的文件对象,是则针对当前增量索引线程所对应共享文件路径下、n的值进行加1更新,并针对当前增量索引线程所对应共享文件路径,返回步骤b1-1;否则即完成当前增量索引线程所对应共享文件路径下的遍历,并进入步骤b1-8。

步骤b1-8.待各个增量索引线程均完成其所对应共享文件路径下的遍历,将临时内存中的索引数据对象转移至临时索引文件当中,若临时索引文件为非空,则该临时索引文件即为目标共享文件夹目录所对应的临时索引文件;否则目标共享文件夹目录不存在其所对应的临时索引文件。

步骤b2.判断目标共享文件夹目录所对应的索引文件是否被写锁定,是则待该索引文件解锁后,进入步骤b3;否则直接进入步骤b3。

步骤b3.将临时索引文件加入至目标共享文件夹目录所对应的索引文件中,对该索引文件进行更新,并清除临时索引文件。

本发明设计局域网共享文件索引构建方法中,还包括基于删除文件对象的索引文件更新方法,实际应用当中,用于客户端完成局域网共享文件夹目录索引文件的更新,如图3所示,执行如下步骤c1至步骤c4。

步骤c1.客户端基于局域网共享文件夹目录的索引文件,获取目标文件对象的搜索结果列表,然后进入步骤c2。

步骤c2.由客户端判断目标文件对象的搜索结果列表中目标文件对象是否存在,是表示局域网共享文件夹目录的索引文件无需更新;否则进入步骤c3。

步骤c3.将针对局域网共享文件夹目录的索引文件的读锁升级为写锁,待升级成功后,进入步骤c4。

步骤c4.由客户端将局域网共享文件夹目录的索引文件中目标文件对象的索引数据进行删除,更新索引文件。

基于上述所设计的局域网共享文件索引构建方法,本发明还进一步设计了基于局域网共享文件索引构建方法的搜索方法,由客户端根据搜索关键字和搜索范围实现搜索,初始化中间结果列表为空,如图4所示,并包括如下步骤:

步骤d1.由该客户端判断局域网共享文件夹目录的索引文件中、是否存在搜索范围所对应的索引文件,是则加载该搜索范围所对应的索引文件,并进入步骤d2;否则针对该搜索范围所对应的共享文件路径,执行目标索引文件创建方法,然后加载该搜索范围所对应的索引文件,并进入步骤d2;

步骤d2.由该客户端判断该索引文件的更新时间是否晚于该搜索范围根目录的最后修改时间,是则获取该索引文件的索引数据内容,并进入步骤d3;否则针对该搜索范围根目录,执行基于新增文件的索引文件更新方法,然后获取该搜索范围所对应索引文件的索引数据内容,并进入步骤d3;

步骤d3.由该客户端遍历该搜索范围所对应的索引数据内容,针对搜索关键字与索引数据内容进行匹配,并将匹配文件信息加入中间结果列表,然后进入步骤d4;

步骤d4.由客户端判断中间结果列表对应文件是否存在,是则由客户端执行基于删除文件对象的索引文件更新方法,搜索结果为空;否则将中间结果列表中内容加入最终结果列表,获得搜索结果。

基于上述所设计局域网共享文件索引构建方法及搜索方法的实际应用,针对局域网共享的索引数据的具体实际应用,进一步设计如下。

1、索引数据的生成与存储

当索引器访问到文件或文件夹时就会获取其元信息,并根据这些元信息构造索引对象,这些对象就是索引数据,写入文件后就构成了索引文件。索引数据可以以二进制流、json、xml等格式写入索引文件。

为了提高读写效率、均衡内存占用,在建立索引的过程中,始终为索引线程在内存中分配固定大小的内存,用来存放索引数据,当分配的内存被消耗光的时候,把已经索引的数据写入磁盘,清空内存里所占内存,以用作下一轮存放索引产生的数据的存储区。

因为多客户端、多线程并发进行索引,为防止文件抢占和锁定,每个线程在将内存数据写入磁盘时均创建独立的临时索引文件。当索引数据被写入索引文件后,线程会释放对文件的占用。此时,负责索引归并的线程检测到文件可用时,就会将这些临时文件归并到最终索引文件,并在完成归并后删除临时索引文件。每个临时索引文件同时只能由一个归并线程访问。该方法示意图如图5所示。

2、共享环境下索引数据的同步

将索引文件共享,由所有客户端共同维护索引数据,其优点是显而易见的,而如何在多客户端共同使用索引时保证数据的一致性,成为需要解决的关键问题。本方法采用“读写锁”机制实现同步。以下根据索引文件的读、写操作的三种情况分别进行说明。

2.1多客户端同时“读索引”

索引过程中归并得到的最终索引是各客户端执行搜索时依赖的索引数据。多客户端同时读取该文件,而不对该文件进行修改时,不会出现数据不一致的问题,即索引文件允许多个客户端同时读取。

2.2多客户端同时“写索引”

对最终索引的写操作集中在归并线程将临时索引文件的数据归并到最终索引文件。多个客户端同时需要“写索引”时,采用“写锁”进行同步,即只有获取到“写锁”才能“写索引”,同时只能有一个客户端获取到“写锁”。

“写锁”的获取顺序采用非公平模式,即获取的顺序是不确定的。各归并线程竞争获取“写锁”,这样可能会延缓一个或多个写线程,但是会比公平模式有更高的吞吐量。

2.2多客户端同时“写和读索引”

如果同时存在“读索引”和“写索引”的客户端,为了防止出现“写锁”阻塞“读锁”影响使用效率的问题,本方法采用可重入锁机制。即仅当一个线程已经持有“写锁”,才允许“写锁”重入,否则仅允许“读锁”,同时允许“写锁”降低为“读锁”。

如此,上述所设计所设计局域网共享文件索引构建方法及搜索方法,在实际应用当中,针对局域网中共享文件的共享特性,将针对共享文件建立的,由客户端搜索时使用的索引数据进行共享,节省了每个客户端均需维护一套索引数据所耗费的资源;由所有使用搜索功能的客户端共同维护索引数据,分摊索引消耗的时间和资源,减轻单一节点的负荷;使用同步机制访问和更新索引文件,在保证索引数据一致性的同时保证数据的访问效率;由各节点利用共享的索引数据独立完成搜索,在保证索引数据复用的同时,消除了对服务端的依赖。

上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1