具体实施方式
图1为本发明一实施例提供的搜索方法的流程示意图,本实施例所提供的搜索方法可由搜索引擎执行,如图1所示,该搜索方法包括:
101、接收用户终端发送的用于对网页进行搜索的关键字。
102、利用各从节点的内存中存储的第一索引文件,进行搜索,获得与关键字相匹配的第一匹配网页。
其中,第一索引文件是各从节点根据原始网络数据创建的,原始网络数据是主节点以负载均衡为依据,根据各从节点的负载,向各从节点发送的。
搜索引擎包括上载系统和索引系统,其中索引系统包括主节点和各从节点。主节点以负载均衡为依据,根据各从节点的负载,向各从节点发送原始网络数据,以使各从节点根据原始网络数据创建索引文件。各从节点之间相互不进行通信,由主节点对各从节点进行统一管理,使得对从节点的删减更加灵活。经过测试,若原始网络数据的平均大小为1K,在单节点双核CPU、24G内存的配置的情况下,则该搜索引擎的平均索引速度达到2500条/秒,10个从节点的情况下,则该搜索引擎的平均索引速度达到20000条/秒。
从节点可采用多线程的工作模式根据原始网络数据创建索引文件。从节点接收主节点发送的原始网络数据,对原始网络数据进行解码,将解码后的原始网络数据加入到原始数据队列中,利用多个索引创建线程,对原始数据队列中的原始网络数据并行进行处理,获得索引文件,将该索引文件存储到内存中,并对内存索引进行更新。其中,内存索引用于指示索引文件的存储位置。
103、若第一匹配网页的个数少于第一阈值,利用各节点的磁盘中所存储的第二索引文件,进行搜索,获得与所述关键字相匹配的第二匹配网页。
其中,第二索引文件是以第一时长为周期对所述各从节点的内存中所存储的所述第一索引文件,周期性持久化到磁盘中获得的。
104、向用户终端发送搜索结果。
其中,搜索结果包括第一匹配网页和/或第二匹配网页。
本实施例中的搜索引擎可用于对舆情数据的处理中。
本实施例中,通过接收用户终端发送的用于对网页进行搜索的关键字,利用各从节点的内存中存储的第一索引文件,进行搜索,获得与关键字相匹配的第一匹配网页后,若第一匹配网页的个数少于第一阈值,再利用各节点的磁盘中所存储的第二索引文件,进行搜索,获得与所述关键字相匹配的第二匹配网页,向用户终端发送包含第一匹配网页和第二匹配网页的搜索结果,由于首先利用内存中存储的第一索引文件进行搜索,不需要占用I/O接口,从而避免了由于将索引文件存储在磁盘所导致的检索速度下降,提高了检索效率。
图2为本发明另一实施例提供的搜索方法的流程示意图,如图2所示,该搜索方法包括:
201、搜索引擎接收用户终端发送的用于对网页进行搜索的关键字。
202、搜索引擎利用各从节点的内存中存储的第一索引文件,进行搜索,获得与关键字相匹配的第一匹配网页。
其中,第一索引文件是各从节点根据原始网络数据创建的,原始网络数据是主节点以负载均衡为依据,根据各从节点的负载,向各从节点发送的。
主节点通过各从节点发送的心跳包,获取各从节点的负载,心跳包记录各从节点的索引量和活动状态,活动状态为正在工作或未工作。搜索引擎包括上载系统和索引系统,上载系统向索引系统中的主节点发送原始网络数据,上载系统仅与索引系统中的主节点相联系,仅能获知主节点的网络地址。索引系统中的主节点根据心跳包,从各从节点中选择活动状态为正在工作,并且索引量最小的从节点作为目标从节点,向上载系统发送目标从节点的网络地址,以使上载系统根据该网络地址向目标从节点发送原始网络数据。目标从节点接收到原始网络数据之后,在该目标从节点的内存中创建索引文件,直接以增量方式更新内存的索引库后,该索引文件即可用于检索。
203、若第一匹配网页的个数少于第一阈值,搜索引擎利用各节点的磁盘中的往期索引库中存储的第二索引文件进行搜索。
其中,往期索引库用于存储持久化到磁盘的时间不大于第二时长的第二索引文件。第二索引文件是以第一时长为周期对所述各从节点的内存中所存储的所述第一索引文件,周期性持久化到磁盘中获得的。
优先利用各从节点的内存中存储的第一索引文件,进行搜索,但由于内存具有易失性,为了提高索引文件的安全性,需要周期性的将内存中的第一索引文件存储到磁盘中,即持久化到磁盘,由于持久化到磁盘的操作需要对磁盘进行写操作,占用I/O接口,影响搜索引擎的搜索效率,因而持久化到磁盘的操作周期不需要太高,优选第一时长为1个小时。对持久化到磁盘后的第一索引文件进行标记,在每个该第一时长内,只需根据该标记,将最新创建的未持久化到磁盘的索引文件进行操作。
204、若利用所述各节点的磁盘中的往期索引库进行搜索所获得的匹配网页的个数少于第二阈值,搜索引擎利用所述各节点的磁盘中的历史索引库进行搜索,获得与所述关键字相匹配的第二匹配网页。
其中,历史索引库用于存储持久化到磁盘的时间大于所述第二时长的第二索引文件。
205、搜索引擎向用户终端发送搜索结果。
其中,搜索结果包括第一匹配网页和第二匹配网页。
进一步,本实施例中的搜索引擎还用于实时监控各从节点的内存的占用率,若各从节点中存在所述内存的占用率超过第三阈值的从节点,根据所述第一索引文件的创建时间,依次对所述内存的占用率超过第三阈值的从节点的内存中所存储的已持久化到磁盘的第一索引文件进行删除。
具体的,搜索引擎可预先设定第三阈值,以及所删除的已持久化到磁盘的第一索引文件的数据量,即每次删除所释放的存储空间大小。当从节点内存的占用率超过第三阈值时,从内存中选择已持久化到磁盘的第一索引文件,按照第一索引文件的创建时间,依次进行删除,直至所删除的第一索引文件达到预先设定的所释放的存储空间大小。以及将所删除的第一索引文件记录到已卸载队列中。其中,在计算内存的占用率时,不能够使用节点的操作系统所提供的内存信息,而是按照当前内存中加载的所有第一索引文件统计索引库的大小。这是由于搜索引擎在进行搜索时,索引文件是不能够被删除的,操作系统的删除操作仅是减少了索引文件的引用计数,而并没有真正的释放内存空间,是有当所有的搜索操作结束后,该索引文件所占用的内存才能够真正释放。搜索引擎还可在将所删除的第一索引文件记录到已卸载队列中之后,将持久化目录中记录的已卸载队列中的第一索引文件移动至磁盘主索引库目录,对磁盘主索引库目录进行更新,以重新划分磁盘中的往期索引库和历史索引库。
本实施例中,通过接收用户终端发送的用于对网页进行搜索的关键字,利用各从节点的内存中存储的第一索引文件,进行搜索,获得与关键字相匹配的第一匹配网页后,若第一匹配网页的个数少于第一阈值,再利用各节点的磁盘中所存储的第二索引文件,进行搜索,获得与所述关键字相匹配的第二匹配网页,向用户终端发送包含第一匹配网页和第二匹配网页的搜索结果,由于首先利用内存中存储的第一索引文件进行搜索,不需要占用I/O接口,从而避免了由于将索引文件全部存储在磁盘所导致的检索速度下降,提高了检索效率。
图3为本发明一实施例提供的搜索引擎的结构示意图,如图3所示,搜索引擎包括:接收模块31、第一搜索模块32、第二搜索模块33和发送模块34。
接收模块31,用于接收用户终端发送的用于对网页进行搜索的关键字。
第一搜索模块32,与接收模块31连接,用于利用各从节点的内存中存储的第一索引文件,进行搜索,获得与所述关键字相匹配的第一匹配网页。
其中,第一索引文件是所述各从节点根据原始网络数据创建的,所述原始网络数据是主节点以负载均衡为依据,根据所述各从节点的负载,向所述各从节点发送的。各从节点的负载是所述各从节点利用心跳包向所述主节点发送的。
第二搜索模块33,与第一搜索模块32连接,用于若所述第一匹配网页的个数少于第一阈值,利用所述各节点的磁盘中所存储的第二索引文件,进行搜索,获得与所述关键字相匹配的第二匹配网页。
其中,第二索引文件是以第一时长为周期对所述各从节点的内存中所存储的所述第一索引文件,周期性持久化到磁盘中获得的。
发送模块34,与第二搜索模块33连接,用于向所述用户终端发送搜索结果。
其中,搜索结果包括所述第一匹配网页和/或所述第二匹配网页。
本实施例中,通过接收用户终端发送的用于对网页进行搜索的关键字,利用各从节点的内存中存储的第一索引文件,进行搜索,获得与关键字相匹配的第一匹配网页后,若第一匹配网页的个数少于第一阈值,再利用各节点的磁盘中所存储的第二索引文件,进行搜索,获得与所述关键字相匹配的第二匹配网页,向用户终端发送包含第一匹配网页和第二匹配网页的搜索结果,由于首先利用内存中存储的第一索引文件进行搜索,不需要占用I/O接口,从而避免了由于将索引文件全部存储在磁盘所导致的检索速度下降,提高了检索效率。
图4为本发明另一实施例提供的搜索引擎的结构示意图,如图4所示,在上一实施例提供的搜索引擎的基础上,本实施例中的第二搜索模块33进一步包括:第一搜索单元331和第二搜索单元332。
第一搜索单元331,用于利用所述各节点的磁盘中的往期索引库所存储的第二索引文件进行搜索。
其中,往期索引库用于存储持久化到磁盘的时间不大于第二时长的第二索引文件。
第二搜索单元332,与第一搜索单元331连接,用于若利用所述各节点的磁盘中的往期索引库进行搜索所获得的匹配网页的个数少于第二阈值,利用所述各节点的磁盘中的历史索引库所存储的第二索引文件继续进行搜索,获得与所述关键字相匹配的第二匹配网页。
其中,历史索引库用于存储持久化到磁盘的时间大于所述第二时长的第二索引文件。
进一步,本实施例中的搜索引擎还包括:
监控模块35,与第一搜索模块32连接,用于监控各从节点的内存的占用率。
删除模块36,与监控模块35接,用于若各从节点中存在所述内存的占用率超过第三阈值的从节点,根据所述第一索引文件的创建时间,依次对所述内存的占用率超过第三阈值的从节点的内存中所存储的已持久化到磁盘的第一索引文件进行删除。
本实施例中,通过接收用户终端发送的用于对网页进行搜索的关键字,利用各从节点的内存中存储的第一索引文件,进行搜索,获得与关键字相匹配的第一匹配网页后,若第一匹配网页的个数少于第一阈值,再利用各节点的磁盘中所存储的第二索引文件,进行搜索,获得与所述关键字相匹配的第二匹配网页,向用户终端发送包含第一匹配网页和第二匹配网页的搜索结果,由于首先利用内存中存储的第一索引文件进行搜索,不需要占用I/O接口,从而避免了由于将索引文件全部存储在磁盘所导致的检索速度下降,提高了检索效率。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。