具体实施方式
图1为本发明一实施例提供的舆情数据存储方法的流程示意图,本实施例所提供的方法可由上载系统实施,如图1所示,包括:
101、接收舆情数据。
可选的,预先约定舆情数据的文件格式,从而对接收到的舆情数据进行解析,获得网页信息列表形式的舆情数据。该舆情数据为至少一个,包括文章标题和正文。
102、利用哈希值算法对所述舆情数据进行计算,获得舆情数据的哈希值。
可选的,对舆情数据中的标题和正文进行过滤,从而过滤掉符号、人称代词和助词等无用字符,获得过滤后的文章标题和正文,记为抽样样本;根据预设的抽样文字块长度即每个抽样文字块所包含的字符数,将该抽样样本进行切分,获得多个抽样文字块;根据预设的抽样词数和抽样词长度从每个抽样文字块中抽取符合该抽样词数个特征字符,每个特征字符的长度符合抽样词长度。根据该特征字符,利用MurmurHash算法(哈希值算法的一种),计算获得舆情数据的哈希值,以此作为该舆情数据的唯一标识。
或者可选的,直接利用哈希值算法对所述舆情数据中的标题和正文进行计算,例如采用CRC32算法、MD5算法、SHA-1算法和MurmurHash算法中的一种进行计算,获得舆情数据的哈希值,以此作为该舆情数据的唯一标识。
103、根据所述舆情数据的哈希值和计算获得的历史舆情数据的哈希值,从所述舆情数据中筛选出与所述历史舆情数据不重复的目标舆情数据。
其中,历史舆情数据是已存储在数据库中的舆情数据。历史舆情数据的哈希值是预先采用上述哈希值算法进行计算获得的。
104、将目标舆情数据存储在该数据库中。
本实施例中,通过利用哈希值算法对接收到的舆情数据进行计算,获得舆情数据的哈希值,根据该舆情数据的哈希值和计算获得的历史舆情数据的哈希值,从舆情数据中筛选出与历史舆情数据不重复的目标舆情数据,从而仅对目标舆情数据进行存储,解决了现有技术中由于将相互重复的舆情数据均保存到数据库中所导致的存储空间利用率低的技术问题。
图2为本发明另一实施例提供的舆情数据存储方法的流程示意图,本实施例所提供的方法可由上载系统实施,如图2所示,包括:
201、接收舆情数据。
其中,舆情数据包括文章标题、正文、发布时间和链接地址。作为一种特殊情况,若舆情数据中存在发布时间为空的情况,则将发布时间修改为当前时间。
202、将垃圾词库中存储的词汇与舆情数据中的文章标题和正文依次进行比对,确定舆情数据中的文章标题和正文中不存在垃圾词库中存储的词汇。
可选的,对舆情数据中的标题和正文进行过滤,过滤掉匹配上垃圾词库中的至少两个不同的垃圾词的舆情数据,将进行过滤后的舆情数据记为抽样样本。垃圾词库用于存储广告词和淫秽词。
203、利用哈希值算法对所述舆情数据进行计算,获得舆情数据的哈希值。
可选的,过滤掉舆情数据中的符号、人称代词和助词等无用字符后,根据预设的抽样文字块长度即每个抽样文字块所包含的字符数,将该抽样样本进行切分,获得多个抽样文字块;根据预设的抽样词数和抽样词长度从每个抽样文字块中抽取符合该抽样词数个特征字符,每个特征字符的长度符合抽样词长度。根据该特征字符,利用MurmurHash算法,计算获得舆情数据的哈希值,以此作为该舆情数据的唯一标识。其中,抽样词数与抽样词长度的乘积不大于抽样文字块长度。
例如:记预设的抽样词数为n,抽样词长度w,每个抽样文字块长度为k,可每隔s个字符从抽样文字块中抽取一个特征字符,即间隔步长为s,其中,
s=(k-n*w)/(n–1)。
每间隔s个字符,从第x个抽样文字块Cx中抽取长度w的特征字符,记从全部的N个抽样文字块中抽取的特征字符的集合为S,
S={C1 0~k+C1 (k+s)~(2k+s)+…+C1 [(n-1)k+(n-1)s]~[nk+(n-1)s]}+{C2 0~k+C2 (k+s)~(2k+s)+…+C2 [(n -1)k+(n-1)s]~[nk+(n-1)s]}+…+{CN 0~k+CN (k+s)~(2k+s)+…+CN [(n-1)k+(n-1)s]~[nk+(n-1)s]}
其中Cx a~b表示从第x个抽样文字块中的第a个字符到第b个字符。
利用MurmurHash算法对上述集合S中的字符进行计算获得舆情数据的哈希值,该算法的伪代码为:
204、根据舆情数据中的发布时间,将舆情数据划分为近期舆情数据和远期舆情数据。
其中,近期舆情数据的发布时间与当前时间之间的差值不大于所述预设时长,例如3天。远期舆情数据的发布时间与当前时间之间的差值大于预设时长。
205、根据近期舆情数据的哈希值,从近期舆情数据中筛选出与内存数据库中已存储的历史舆情数据不重复的第一样本舆情数据。
可选的,数据库包括内存数据库和磁盘数据库,内存数据库用于存储已存储时长不大于预设时长的历史舆情数据,磁盘数据库用于存储已存储时长大于所述预设时长的历史舆情数据。预先利用所述哈希值算法对内存数据库中已存储的历史舆情数据进行计算,获得该历史舆情数据的哈希值,并进行存储。根据近期舆情数据的哈希值,采用Bloomfilter算法从近期舆情数据中筛选出与内存数据库中已存储的历史舆情数据不重复的第一样本舆情数据。由于预设时间内,例如3天,重复的概率较大,因此,利用内存数据库可提高查询效率。
进一步,若预设时长为3天,还可对近期舆情数据进行进一步细分,以小时为单位,将内存数据库中的历史舆情数据划分在72个文件中存放,在同一个文件中存放的历史舆情数据的发布时间之间的差异不大于一个小时。定期淘汰或转存存储时间查过3天的历史舆情数据。
206、将第一样本舆情数据与远期舆情数据进行分块处理,划分为多个数据块。
可选的,将第一样本舆情数据与远期舆情数据进行分块处理的过程中,需要进行物理文件备份,以防止系统异常退出时,出现数据丢失的情况,从而当系统异常退出后,在系统再次启动时,可重新进行加载,并重新处理未完成分块处理的第一样本舆情数据与远期舆情数据。进行分块处理后,对数据块采用socket或http协议进行封装。
207、利用多个线程并行对该多个数据块进行根据远期舆情数据的哈希值,从各数据块中的远期舆情数据中筛选出与磁盘数据库中已存储的历史舆情数据不重复的第二样本舆情数据的处理。
208、确定目标舆情数据为第一样本舆情数据和第二样本舆情数据。
209、将目标舆情数据存储在所述数据库的内存数据库中。
可选的,将目标舆情数据转换为xml格式,存储到内存数据库中。当存储时长大于预设时长时,转存到磁盘数据库中。
本实施例中,通过利用哈希值算法对接收到的舆情数据进行计算,获得舆情数据的哈希值,根据该舆情数据的哈希值和计算获得的历史舆情数据的哈希值,从舆情数据中筛选出与历史舆情数据不重复的目标舆情数据,从而仅对目标舆情数据进行存储,解决了现有技术中由于将相互重复的舆情数据均保存到数据库中所导致的存储空间利用率低的技术问题。
图3为本发明一实施例提供的舆情数据存储装置的结构示意图,本实施例所提供的装置可设置于上载系统中,如图3所示,包括:接收模块31、计算模块32、筛选模块33和存储模块34。
接收模块31,用于接收舆情数据;
计算模块32,与接收模块31连接,用于利用哈希值算法对所述舆情数据进行计算,获得所述舆情数据的哈希值;
筛选模块33,与计算模块32连接,用于根据所述舆情数据的哈希值和计算获得的历史舆情数据的哈希值,从所述舆情数据中筛选出与所述历史舆情数据不重复的目标舆情数据;所述历史舆情数据是已存储在数据库中的舆情数据;
可选的,筛选模块具体用于将所述舆情数据的哈希值与所述历史舆情数据的哈希值相比较,获得所述舆情数据中哈希值与所述历史舆情数据的哈希值不同的目标舆情数据。
存储模块34,与筛选模块33连接,用于将所述目标舆情数据存储在所述数据库中。
本实施例中,通过利用哈希值算法对接收到的舆情数据进行计算,获得舆情数据的哈希值,根据该舆情数据的哈希值和计算获得的历史舆情数据的哈希值,从舆情数据中筛选出与历史舆情数据不重复的目标舆情数据,从而仅对目标舆情数据进行存储,解决了现有技术中由于将相互重复的舆情数据均保存到数据库中所导致的存储空间利用率低的技术问题。
图4为本发明另一实施例提供的舆情数据存储装置的结构示意图,如图4所示,在上一实施例的基础上,本实施例中的数据库包括内存数据库和磁盘数据库,其中,内存数据库用于存储已存储时长不大于预设时长的历史舆情数据,磁盘数据库用于存储已存储时长大于所述预设时长的历史舆情数据,另外,舆情数据包括发布时间,基于此,筛选模块33包括:划分单元331、第一筛选单元332、第二筛选单元333和确定单元334。
划分单元331,用于根据所述舆情数据中的发布时间,将所述舆情数据划分为近期舆情数据和远期舆情数据;所述近期舆情数据的发布时间与当前时间之间的差值不大于所述预设时长;所述远期舆情数据的发布时间与所述当前时间之间的差值大于所述预设时长;
第一筛选单元332,与划分单元331连接,用于根据所述近期舆情数据的哈希值,从所述近期舆情数据中筛选出与所述内存数据库中已存储的历史舆情数据不重复的第一样本舆情数据。
第二筛选单元333,与划分单元331连接,用于根据所述远期舆情数据的哈希值,从所述远期舆情数据中筛选出与所述磁盘数据库中已存储的历史舆情数据不重复的第二样本舆情数据。
确定单元334,与第一筛选单元332和第二筛选单元333连接,用于确定所述目标舆情数据为所述第一样本舆情数据和所述第二样本舆情数据。
进一步,存储模块34具体用于将所述目标舆情数据存储在数据库的内存数据库中。
进一步,舆情数据还包括文章标题和正文。
基于此,本实施例中的舆情数据存储装置,还包括:
比对模块35,与接收模块31和计算模块32连接,用于将垃圾词库中存储的词汇与所述舆情数据中的文章标题和正文依次进行比对,确定所述舆情数据中的文章标题和正文中不存在所述垃圾词库中存储的词汇。
本实施例中,通过利用哈希值算法对接收到的舆情数据进行计算,获得舆情数据的哈希值,根据该舆情数据的哈希值和计算获得的历史舆情数据的哈希值,从舆情数据中筛选出与历史舆情数据不重复的目标舆情数据,从而仅对目标舆情数据进行存储,解决了现有技术中由于将相互重复的舆情数据均保存到数据库中所导致的存储空间利用率低的技术问题。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。