更新网页存储的方法、设备、网页存储系统和搜索系统与流程

文档序号:12667376阅读:155来源:国知局
更新网页存储的方法、设备、网页存储系统和搜索系统与流程

本发明涉及网页存储和网页搜索技术领域,更具体地,涉及一种用于更新网页存储的方法、用于更新网页存储的设备、网页存储系统和网页搜索系统。



背景技术:

在互联网应用的网页搜索系统中,通常需要以网页摘要的形式将网页数据存储在网页搜索系统的网页存储系统中。由于在互联网中网页数量巨大,因此,通常以键值对的形式将所述网页数据存储在网页存储系统中,其中,所述键值对的主键是归一化的网页地址,所述键值对中的值是网页内容或网页摘要内容。

在现有的网页搜索系统中,由于网页数量巨大以及网页搜索系统对于网页内容的更新不敏感,因此,通常每天或每周对网页存储系统中的网页数据进行更新,或者仅仅对于部分网页数据进行实时更新。

通常,有两种对网页数据进行实时更新的方式。

在第一种方式中,通过辅助的存储设备(例如,Redis系统)来实现实时更新。这种方式会增加网页存储系统的复杂度。

在第二种方式中,以开链哈希表的方式存储网页数据,以便实现对网页数据的快速查找。在向哈希表中存储大量网页的情况下,哈希表冲突会导致查询性能严重下降。此时,需要对哈希表进行扩容。

在现有技术中,在对哈希表进行扩容时,首先创建新哈希表,接着将原有哈希表中存储的网页数据一次性拷贝到新哈希表中。在所述一次性拷贝过程中,原有哈希表的查询性能严重下降。

因此,需要提供一种新的技术方案,针对上述现有技术中的至少一个技术问题进行改进。



技术实现要素:

本发明的一个目的是提供一种用于更新网页存储的新技术方案。

根据本发明的第一方面,提供了一种用于更新网页存储的方法,包括:检测网页存储系统的第一哈希表的冲突率,其中,所述第一哈希表存储网页数据;在冲突率大于更新阈值的情况下,创建第二哈希表,其中,第二哈希表的容量大于第一哈希表的容量;以及以多次迁移处理将第一哈希表中网页数据迁移到第二哈希表中,其中,在每次迁移处理中,将第一哈希表中网页数据的一部分迁移到第二哈希表中。

可选地或另选地,所述冲突率是哈希表中当前实际容纳的网页数据所占用的哈希桶数与哈希表中的全部哈希桶数的比值,所述更新阈值是关于所述比值的阈值。

可选地或另选地,所述冲突率是所述第一哈希表中当前实际存储的网页数据所占用的哈希桶数,以及所述更新阈值是关于哈希桶数的阈值。

可选地或另选地,以多次迁移处理将第一哈希表中网页内容迁移到第二哈希表中还包括:当接收到查询时将第一哈希表中网页数据迁移到第二哈希表中。

可选地或另选地,当接收到查询时将第一哈希表中网页数据迁移到第二哈希表中还包括:在第一哈希表中设置迁移游标i,其中,迁移游标i指示当前要被迁移的网页数据元素;以及当接收到查询时将迁移游标i所指示的网页数据元素迁移到第二哈希表。

可选地或另选地,所述当前要被迁移的网页数据元素包括一个或多个哈希桶对应的元素或一个哈希桶中的一个或多个元素。

可选地或另选地,在迁移过程中,新的网页数据被写入到第二哈希表中。

可选地或另选地,还包括:从第二哈希表读取网页数据;以及当在第二哈希表中未找到相关网页数据的情况下从第一哈希表读取网页数据。

可选地或另选地,以多次迁移处理将第一哈希表中网页内容迁移到第二哈希表中还包括:将来自第一哈希表的网页数据写入文件缓存中;以及在写入文件缓存的网页数据量大于缓存阈值的情况下,将文件缓存中的网页数据写入到第二哈希表。

可选地或另选地,还包括:当将文件缓存中的网页数据写入到第二哈希表时,在第二哈希表中的网页数据文件的长度大于文件缓存中相应的网页数据文件的长度的情况下,读取文件缓存中的所述网页数据文件。

可选地或另选地,所述网页数据是网页摘要。

可选地或另选地,所述网页存储系统是网页搜索系统的存储系统。

根据本发明的第二方面,提供了一种用于更新网页存储的设备,包括:用于检测网页存储系统的第一哈希表的冲突率的装置,其中,所述第一哈希表存储网页数据;用于在冲突率大于更新阈值的情况下创建第二哈希表的装置,其中,第二哈希表的容量大于第一哈希表的容量;以及用于以多次迁移处理将第一哈希表中网页数据迁移到第二哈希表中的装置,其中,在每次迁移处理中,将第一哈希表中网页数据的一部分迁移到第二哈希表中。

根据本发明的第三方面,提供了一种网页存储系统,包括上述用于更新网页存储的设备。

根据本发明的第四方面,提供了一种网页存储系统,包括:存储器和处理器,其中,所述存储器包括机器可执行指令,当所述网页存储系统运行时,所述机器可执行指令用于控制所述处理器执行根据上述任何一项所述的方法中的处理。

根据本发明的第五方面,提供了一种网页搜索系统,包括根据上述任一所述的网页存储系统,用于存储网页数据,以供检索。

根据本发明的一个实施例,可以在一定程度上减轻网页数据迁移对哈希表的查询性能的影响。

通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。

附图说明

被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。

图1示出了根据本发明的一个实施例的用于更新网页存储的方法的示意性流程图。

图2示出了根据本发明的一个实施例的网页存储系统的示意性框图。

图3示出了根据本发明的另一个实施例的网页存储系统的示意性框图。

图4示出了根据本发明的一个实施例的网页搜索系统的示意性框图。

具体实施方式

现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。

以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。

对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。

在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。

下面,参照附图描述根据本发明的各个实施例和例子。

<方法>

图1示出了根据本发明的一个实施例的用于更新网页存储的方法的示意性流程图。

如图1所示,在步骤S1100,检测网页存储系统的第一哈希表的冲突率。第一哈希表存储网页数据。

网页存储系统是网页搜索系统的存储系统。该网页存储系统具有哈希表,在哈希表中存储有大量网页数据。例如,该网页数据可以包括网页摘要。在这种情况下,可以用键值对的方式存储网页数据,所述键值对的主键是归一化的网页地址,所述键值对中的值是网页内容或网页摘要。

使用哈希表进行存储,可以快速地查找到对应的网页数据。

在步骤S1200,在冲突率大于更新阈值的情况下,创建第二哈希表。例如,第二哈希表的容量大于第一哈希表的容量。

所述更新阈值与步骤S1100涉及的哈希表的冲突率相对应。根据哈希表的冲突率的定义方式不同,则设定的更新阈值也不同。

在一个例子中,所述哈希表的冲突率是哈希表中当前实际容纳的网页数据所占用的哈希桶数与哈希表中的全部哈希桶数的比值,以及所述更新阈值是关于所述比值的阈值。例如,哈希表中的全部哈希桶数为100,哈希表中当前实际容纳的网页数据所占用哈希桶数50,则哈希表的冲突率为50与100的比值,即0.5。例如,所述更新阈值是0.5。当哈希表的冲突率达到0.5时,开始创建第二哈希表。

在另一个例子中,当建立一个哈希表时,可以预先设定哈希桶数的阈值。当实际存储数据的哈希桶数达到该阈值时,进行更新。在这种情况下,可以直接以哈希桶数作为冲突率。例如,所述冲突率是所述第一哈希表中当前实际存储的网页数据所占用的哈希桶数,以及所述更新阈值是关于哈希桶数的阈值。例如,预先设置的更新阈值是60。当哈希表中当前实际存储的网页数据所占用的哈希桶数为60时,开始创建第二哈希表。

例如,所述哈希表的冲突率还可为哈希表中当前实际容纳的网页数据所占用的哈希桶的容量与哈希表中的全部哈希桶的总容量的比值。例如,哈希表中当前实际容纳的网页数据所占用的哈希桶的容量为7000,哈希表中的全部哈希桶的总容量为10000,则哈希表的冲突率为7000与10000的比值,即0.7。例如,所述更新阈值被设为0.7。当冲突率是0.7时,开始创建第二哈希表。

所述第二哈希表所能容纳的网页数据的数量大于第一哈希表所能容纳的网页数据的数量。可以通过采用增加哈希桶数的方式创建第二哈希表,或者,也可以通过增加每个哈希桶数所能容纳的网页数据的数量的方式创建第二哈希表。例如,在通过增加哈希桶数的方式创建第二哈希表的情况下,哈希表的扩展系数为q(q>1),第一哈希表的哈希桶数为N。当第一哈希表的冲突率大于更新阈值时,创建第二哈希表,其中,所创建的第二哈希表的哈希桶数N’=N*q。

在步骤S1300,以多次迁移处理将第一哈希表中网页数据迁移到第二哈希表中,其中,在每次迁移处理中,将第一哈希表中网页数据的一部分迁移到第二哈希表中。

将第一哈希表中网页数据迁移到第二哈希表中的触发条件是接收到网页查询请求。若检测到网页存储系统的第一哈希表的冲突率大于更新阈值,当接收到网页查询请求时,将第一哈希表中的部分网页数据迁移到第二哈希表。这样可以尽量减小迁移操作对查询操作的影响。在一个例子中,在执行查询操作之后,执行所述迁移操作,以进一步减小迁移操作对查询操作的影响。

在一个实施例中,在第一哈希表中预先设置迁移游标i。该迁移游标i指示当前要被迁移的网页数据元素。当接收到查询时,将迁移游标i所指示的网页数据元素迁移到第二哈希表。当前要被迁移的网页数据元素可以为一个或多个哈希桶对应的元素,或者,可以为一个哈希桶中的一个或多个元素。

当将迁移游标i所指示的网页数据元素写入到第二哈希表时,迁移游标i可以移动以指示第一哈希表中下一批要被迁移的网页数据元素。当再次接收到查询请求时,将该迁移游标i指示的要被迁移的网页数据元素迁移到第二哈希表中。按照上述操作步骤,将第一哈希表中存储的网页数据分批迁移到第二哈希表中,直至将第一哈希表存储的网页数据全部迁移到第二哈希表,从而完成对第一哈希表中存储的网页数据的迁移。

例如,可以在将迁移游标i所指示的第一哈希表存储的部分网页数据迁移到第二哈希表之后,从第一哈希表中删除该次迁移处理所对应的网页数据。可选地,当第一哈希表中存储的全部网页数据被迁移到第二哈希表之后,删除第一哈希表或删除第一哈希表中存储的全部网页数据。

在一个实施例中,在第一哈希表存储的网页数据迁移处理过程中,优先从第二哈希表读取查询请求对应的网页数据。当在第二哈希表中未找到查询请求对应的相关网页数据的情况下,从第一哈希表读取查询请求对应的网页数据。

在每次迁移处理中,在将第一哈希表中的网页数据迁移到第二哈希表中时,可以将第一哈希表中要被迁移的网页数据写入到文件缓存中。在写入文件缓存的网页数据量大于缓存阈值的情况下,将文件缓存中的网页数据写入到第二哈希表。写入到文件缓存的要被迁移的网页数据可以被查询。

在将文件缓存中的网页数据写入到第二哈希表的过程中,当接收到查询请求时,可以根据第二哈希表中的网页数据文件的长度判断是从第二哈希表读取该网页数据文件,还是从文件缓存读取该网页数据文件。通常,在向第二哈希表写入网页数据文件时,会将第二哈希表中的文件长度设置的足够大,以确保能够容纳该文件。在结束写入操作时,将文件长度设置为实际长度。考虑到这种情况,当执行查询操作时,在第二哈希表中的网页数据文件的长度大于文件缓存中相应的网页数据文件的长度的情况下,则读取文件缓存中的网页数据文件。

根据一个实施例,采用渐进的方式迁移网页存储系统的网页数据,避免一次性拷贝大量数据,从而减轻单次迁移操作对查询性能的影响。

此外,在一个实施例中,通过这种方式可以动态扩展哈希表的容量。

此外,在一个实施例中,可以在一定程度上分离读/写操作,从而提高系统性能。

<设备>

本领域技术人员应当理解,在电子技术领域中,可以通过软件、硬件以及软件和硬件结合的方式,将上述方法体现在产品中。本领域技术人员很容易基于上面公开的方法,产生一种用于更新网页存储的设备。该设备可以包括用于实现前面所述的用于更新网页存储的方法中的各个操作的装置。例如,该设备可以包括用于检测网页存储系统的第一哈希表的冲突率的装置,其中,所述第一哈希表存储网页数据;用于在冲突率大于更新阈值的情况下创建第二哈希表的装置,其中,第二哈希表的容量大于第一哈希表;以及用于以多次迁移处理将第一哈希表中网页数据迁移到第二哈希表中的装置,其中,在每次迁移处理中,将第一哈希表中网页数据的一部分迁移到第二哈希表中。

<网页存储系统>

上面描述的用于更新网页存储的设备可以为网页存储系统的一部分。在这种情况下,所述网页存储系统用于更新网页存储,实现将第一哈希表存储的网页数据多次迁移到第二哈希表中。图2示出了根据本发明的一个实施例的网页存储系统的示意性框图。参见图2,网页存储系统2000包括前面所述的用于更新网页存储的设备2010。

图3示出了根据本发明的另一个实施例的网页存储系统的示意性框图。参见图3,网页存储系统3000可以包括处理器3010、存储器3020、接口装置3030、通信装置3040、显示装置3050、输入装置3060、扬声器3070、麦克风3080,等等。

处理器3010例如可以是中央处理器CPU、微处理器MCU等。存储器3020例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置3030例如包括USB接口、耳机接口等。

通信装置3040例如能够进行有有线或无线通信。

显示装置3050例如是液晶显示屏、触摸显示屏等。输入装置3060例如可以包括触摸屏、键盘等。用户可以通过扬声器3070和麦克风3080输入/输出语音信息。

图3所示的网页存储系统仅是解释性的,并且决不是为了要限制本发明、其应用或用途。

在这个实施例中,所述存储器3020用于存储指令,所述指令用于控制所述处理器3010进行操作以执行图1所示的用于更新网页存储的方法。本领域技术人员应当理解,尽管在图3中示出了多个装置,但是,本发明可以仅涉及其中的部分装置,例如,处理器3010和存储器3020等。技术人员可以根据本发明所公开方案设计指令。指令如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。

<网页搜索系统>

上面描述的网页存储系统是网页搜索系统的存储系统。图4示出了根据本发明的一个实施例的网页搜索系统的示意性框图。参见图4,网页搜索系统4000包括前面所述的网页存储系统4010,用于存储网页数据,以供检索。

<例子>

下面是根据一个具体实施例的例子。

根据一个例子,在尽量不影响查询性能的前提下更新网页存储系统中的网页数据存储。例如,所述网页存储系统是网页搜索系统的存储系统。

在一个例子中,采用渐进式的方式,扩展网页数据的存储容量或更新网页存储。例如,在更新过程中,保持两个哈希表,即第一哈希表(或当前哈希表)和第二哈希表(或更新后的哈希表)。

在现有技术中,在更新时,将第一哈希表中的数据一次性拷贝到第二哈希表中。这会对第一哈希表的读写操作产生很大影响。

在一个例子中,采用渐进式的方式,避免一次性拷贝大量数据,从而减轻对系统性能的影响。

在一个例子中,通过文件缓存,以批量的方式向第二哈希表写入数据。这样可以避免了磁盘的随机写入。

可选地,根据一个实施例,可以方便对网页数据按数据量进行分段。

可选地,由于仅一段数据正在写入,而其他数据段仅提供读服务,因此,可以将大部分的读请求和写请求相隔离开,这可以提高了读取网页摘要的性能。

首先,检测网页存储系统的第一哈希表的冲突率。

例如,哈希表的冲突率是哈希表中当前实际容纳的网页数据所占用的哈希桶数与哈希表中的全部哈希桶数的比值。哈希表中的全部哈希桶数N为100。预设的更新阈值为0.6。当检测到网页存储系统的哈希表中当前实际容纳的网页数据所占用的哈希桶数为61时,第一哈希表的冲突率为61与100的比值,即0.61,其大于预设的更新阈值。

接着,创建第二哈希表。

例如,以增加哈希桶数的方式创建第二哈希表。哈希表的扩展系数为q(q>1)。当第一哈希表的冲突率大于更新阈值时,创建第二哈希表。所创建的第二哈希表的哈希桶数N’=N*q。例如,假设q=1.5,则第二哈希表的哈希桶数N’为150。

然后,将第一哈希表中的部分网页数据写入到文件缓存中。

例如,以多次迁移处理将第一哈希表中的网页数据迁移到第二哈希表中。在接收到查询请求时,将第一哈希表中的网页数据的一部分写入到文件缓存中。

这里,由于基于查询请求来触发迁移操作,因此,可以在一定程度上相对于迁移操作提高查询请求的优先程度,从而减轻迁移操作对查询性能的影响。

例如,可以在第一哈希表中预先设置迁移游标i。该迁移游标i指示当前要被迁移的网页数据元素。当接收到查询请求时,将迁移游标i所指示的网页数据元素写入到文件缓存中。当前要被迁移的网页数据元素可以是一个或多个哈希桶中的元素。

当迁移游标i所指示的网页数据元素写入到文件缓存中之后,移动迁移游标i以指示第一哈希表中下一批要被迁移的网页数据元素。当再次接收到查询请求时,将该迁移游标i指示的要被迁移的网页数据元素写入到文件缓存中。

之后,将文件缓存中的网页数据写入到第二哈希表。

当写入文件缓存的网页数据量大于缓存阈值时,将文件缓存中的网页数据写入到第二哈希表。

按照上述操作步骤,将第一哈希表存储的网页数据批量迁移到第二哈希表中,直至将第一哈希表存储的网页数据全部写入到第二哈希表,从而完成第一哈希表存储的网页数据的迁移。

在完成迁移之后,可以删除第一哈希表。此外,可以在第二哈希表中重置迁移游标i,以便在需要时,将第二哈希表中的网页数据迁移到新的哈希表中。

本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。

计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。

这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。

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