[0036]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0037]本发明实施例公开了一种并发查询条件下的动态查询系统,参见图1所示,该系统包括索引文件磁盘11、缓冲器12、索引文件调取器13、请求分发器14以及N个查询响应器,N为正整数;其中,
[0038]索引文件调取器13,用于根据用户历史查询痕迹信息,从索引文件磁盘11中取出与用户历史查询痕迹信息相对应的倒排表,并将取出的倒排表缓存至缓冲器12内部的缓冲区;
[0039]请求分发器14,用于获取用户终端发送的并发查询请求,并基于分布式的请求分发原则,将并发查询请求中的所有查询请求分发至N个查询响应器;
[0040]任一查询响应器,用于利用缓冲器12中存储的倒排表,对接收到的查询请求进行第一次检索响应,若第一次检索响应后得到相应的检索文档集合,则将该检索文档集合返回至相应的用户终端,若第一次检索响应后未得到相应的检索文档集合,则利用索引文件磁盘11中存储的倒排表,对接收到的查询请求进行第二次检索响应,并将第二次检索响应后得到的检索文档集合返回至相应的用户终端。
[0041]本发明实施例中,查询响应器在对查询请求进行响应时,是先利用缓冲器中保存的倒排表对查询请求进行第一次检索响应的,在第一次检索响应无法得到相应的检索文档的情况下,才会利用索引文件磁盘中保存的倒排表来进行第二次检索响应。一方面,由于缓冲器的数据存取速度要远高于磁盘的数据存取速度;另一方面,由于缓冲器中保存的倒排表是从索引文件磁盘中筛选的与用户历史查询痕迹信息相对应的倒排表,所以,当前接收到的用户查询请求所对应的查询词在缓冲器所保存的倒排表中出现的几率相当高,也即,查询响应器利用缓冲器进行第一次检索响应的过程中,具有非常高的检索命中率,从而有利于查询速度的提升;再一方面,由于缓冲器中保存的只是用户平时常用到的索引信息,其存储的信息量远小于磁盘中的索引信息量,由此也有助于减少查询响应时间。
[0042]综上所述,本发明实施例实现了进一步减少查询响应时间的目的,从而改善了用户的查询体验。
[0043]本发明实施例公开了一种具体的并发查询条件下的动态查询系统,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。具体的:
[0044]参见图2所示,本实施例中,动态查询系统还可以进一步包括:倒排表生成器15,用于为待索引化文档建立索引,生成相应的倒排表,并将生成的倒排表保存至索引文件磁盘
11。其中,倒排表生成器15可以是定期对待索引化文档进行索引化处理,也可以是在系统整体负载低于预设负载时启动对待索引化文档的索引化处理。
[0045]为了提高文件缓存效率,本实施例中,缓冲器12具体可以包括用于存储倒排表的第一缓冲区121和第二缓冲区122,还包括:缓冲控制单元123,用于当第一缓冲区121和第二缓冲区122中的任一缓冲区存满后,从该缓冲区存储的所有倒排表中筛选出满足预设调回条件的倒排表,并将筛选到的倒排表调回至索引文件磁盘11。
[0046]可以理解的是,在第一缓冲区121和第二缓冲区122中的任一缓冲区存满后,另一个还未存满的缓冲区则对此时索引文件调取器13取出的倒排表进行存储。
[0047]具体的,本实施例中,任一查询响应器均可以包括查询词提取单元、第一检索单元和第二检索单元;其中,
[0048]查询词提取单元,用于从请求分发器14分发的查询请求所对应的查询语句中提取出相应的查询词;
[0049]第一检索单元,用于根据查询词,对缓冲区进行检索,若在缓冲区中检索到与查询词相对应的倒排表,则根据检索到的倒排表调取相应的文档集合,并将该文档集合返回至相应的用户终端;
[0050]第二检索单元,用于当第一检索单元在缓冲区中未检索到与查询词相对应的倒排表,则对索引文件磁盘11进行检索,根据检索到的倒排表调取相应的文档集合,并将该文档集合返回至相应的用户终端。
[0051]另外,为了提升用户对检索结果的满意度,本实施例中的任一查询响应器还均可以包括:
[0052]文档排序单元,用于在第一检索单元或第二检索单元将相应的文档集合返回至用户终端之前,计算该文档集合中每个文档与查询语句之间的关联度,并按照关联度的大小顺序,对该文档集合进行重新排序处理。
[0053]为了降低磁盘的存储负担,本实施例中的动态查询系统还可以包括:
[0054]文件压缩模块16,用于在索引文件磁盘11对接收到的倒排表进行存储之前,对该倒排表进行压缩处理,将压缩处理后得到的数据保存至索引文件磁盘11。
[0055]其中,上述文件压缩模块16,具体可以用于在索引文件磁盘11对接收到的倒排表进行存储之前,将该倒排表中的每个数据项存储至存储空间与该数据项大小相一致的文件块,并利用PForDe Ita压缩算法对与该倒排表对应的所有文件块进行压缩处理,将压缩处理后得到的数据保存至索引文件磁盘11。
[0056]需要说明的是,本发明实施例在利用PForDelta压缩算法对倒排表进行压缩处理之前,是先将倒排表中的每个数据项存储至存储空间与该数据项大小相一致的文件块,也即,不同数据项对应于不同大小的文件块,这样相对于现有技术中的每个数据项均对应于大小相同的文件块,本发明实施例由于减少了文件块中的空区域,从而大幅减少了文件块总体大小,进而有利于加快解压速度。
[0057]本发明实施例还公开了一种并发查询条件下的动态查询方法,参见图3所示,该方法包括:
[0058]步骤S31:根据用户历史查询痕迹信息,从索引文件磁盘中取出与用户历史查询痕迹信息相对应的倒排表,并将取出的倒排表缓存至缓冲器内部的缓冲区;
[0059]步骤S32:获取用户终端发送的并发查询请求,并基于分布式的请求分发原则,将并发查询请求中的所有查询请求分发至N个查询响应器,以通过N个查询响应器,对并发查询请求进行检索响应;其中,N为正整数;
[0060]其中,任一查询响应器进行检索响应的过程包括:
[0061]步骤S33:任一查询响应器利用缓冲器中存储的倒排表,对接收到的查询请求进行第一次检索响应,若第一次检索响应后得到相应的检索文档集合,则将该检索文档集合返回至相应的用户终端;
[0062]步骤S34:若第一次检索响应后未得到相应的检索文档集合,则利用索引文件磁盘中存储的倒排表,对接收到的查询请求进行第二次检索响应,并将第二次检索响应后得到的检索文档集合返回至相应的用户终端。
[0063]为了降低磁盘的存储负担,本实施例中的动态查询方法还可以进一步包括:在索引文件磁盘对接收到的倒排表进行存储之前,对该倒排表进行压缩处理,将压缩处理后得到的数据保存至索引文件磁盘。具体可以是,在索引文件磁盘对接收到的倒排表进行存储之前,将该倒排表中的每个数据项存储至存储空间与该数据项大小相一致的文件块,并利用PForDelta压缩算法对与该倒排表对应的所有文件块进行压缩处理,将压缩处理后得到的数据保存至索引文件磁盘。
[0064]需要说明的是,本发明实施例在利用PForDelta压缩算法对倒排表进行压缩处理之前,是先将倒排表中的每个数据项存储至存储空间与该数据项大小相一致的文件块,也即,不同数据项对应于不同大小的文件块,这样相对于现有技术中的每个数据项均对应于大小相同的文件块,本发明实施例由于减少了文件块中的空区域,从而大幅减少了文件块总体大小,进而有利于加快解压速度。
[0065]关于上述各个步骤更加具体的工作过程可参考前述实施例中的相应内容,在此不再赘述。
[0066]本发明实施例中,查询