本发明涉及计算机技术领域,特别是涉及一种检索的方法及装置。
背景技术:
随着互联网技术的快速发展,各种各样的信息都通过互联网进行传播,人们也能够通过互联网获得想要的信息,例如,人们可以通过访问不同的网站,获取不同的信息。
然而,当访问某一网站的用户较多,服务器的并发请求量比较大的时候,容易造成访问文档数据库次数增加,降低服务器处理速率。
技术实现要素:
本发明实施例的目的在于提供一种检索的方法及装置,以降低访问文档数据库次数,提高服务器处理速率。具体技术方案如下:
第一方面,本发明实施例提供了一种检索的方法,所述方法包括:
获取第一客户端发送的携带有检索词的检索请求;
根据检索词,在Redis缓存中检索与检索请求对应的文档;
在Redis缓存中未检索到与检索请求对应的文档时,调用Sphinx索引服务,在文档数据库中进行检索;
在文档数据库中检索到与检索请求对应的文档时,获取与检索请求对应的文档,并返回与检索请求对应的文档给第一客户端。
可选的,在根据检索词,在Redis缓存中检索与检索请求对应的文档之前,本发明实施例的检索的方法还包括:
根据检索词,在预设关键词库中进行检索,得到与检索词对应的同义词和近义词;
相应的,所述根据检索词,在Redis缓存中检索与检索请求对应的文档,包括:
根据检索词、与检索词对应的同义词和近义词,在Redis缓存中检索与检索请求对应的文档。
可选的,在Redis缓存中检索与检索请求对应的文档之后,本发明实施例的检索的方法还包括:
在Redis缓存中检索到与检索请求对应的文档时,获取与检索请求对应的文档,并返回与检索请求对应的文档给第一客户端。
可选的,文档数据库由MySQL数据库组成。
可选的,在返回与检索请求对应的文档给第一客户端之前,本发明实施例的检索的方法还包括:
缓存与检索请求对应的文档到Redis缓存。
第二方面,本发明实施例提供了一种检索的装置,包括:
获取模块,用于获取第一客户端发送的携带有检索词的检索请求;
Redis检索模块,用于根据检索词,在Redis缓存中检索与检索请求对应的文档;
文档数据库检索模块,用于在Redis缓存中未检索到与检索请求对应的文档时,调用Sphinx索引服务,在文档数据库中进行检索;
返回模块,用于在文档数据库中检索到与检索请求对应的文档时,获取与检索请求对应的文档,并返回与检索请求对应的文档给第一客户端。
可选的,检索的装置还包括:
词语检索模块,用于根据检索词,在预设关键词库中进行检索,得到与检索词对应的同义词和近义词;
相应的,Redis检索模块,还用于根据检索词、与检索词对应的同义词和近义词,在Redis缓存中检索与检索请求对应的文档。
可选的,返回模块,还用于在Redis缓存中检索到与检索请求对应的文档时,获取与检索请求对应的文档,并返回与检索请求对应的文档给第一客户端。
可选的,文档数据库由MySQL数据库组成。
可选的,本发明实施例的检索的装置还包括:缓存模块,用于在返回与检索请求对应的文档给第一客户端之前,缓存与检索请求对应的文档到Redis缓存。
本发明实施例提供的一种检索的方法及装置,通过在获取第一客户端发送的检所请求后,先从Redis缓存中检索,在未检索到的情况下,再从文档数据库中进行检索,检索到与检索请求对应的文档后,将检索到的与检索请求对应的文档缓存到缓存模块中,再发送给第一客户端,可以有效降低访问文档数据库的次数,提高服务器处理速度,从而提高用户体验。当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例的一种检索的方法的第一种实施方式的流程图;
图2为本发明实施例的一种检索的方法的第二种实施方式的流程图;
图3为本发明实施例的一种检索的方法的第三种实施方式的流程图;
图4为本发明实施例的一种检索的装置的第一种实施方式的结构图;
图5为本发明实施例的一种检索的装置的第二种实施方式的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了解决现有技术问题,本发明实施例提供了一种检索的方法和装置,以降低访问文档数据库次数,提高服务器处理速率。
下面首先对本发明实施例提供的一种检索的方法进行介绍。
如图1所示,为本发明实施例的一种检索的方法的第一种实施方式的流程图,所述的方法可以包括以下步骤:
S101,获取第一客户端发送的携带有检索词的检索请求;
当用户需要在第一客户端检索需要的内容时,在第一客户端的搜索框内输入与所述内容对应的检索词,并执行预定的操作,该搜索框可以是安装在第一客户端上的可执行程序中的搜索框,也可以是在第一客户端上的网页中的搜索框,这都应当是合理的,在第一客户端生成并发送携带有检索词的检索请求,服务器端通过网络获取到第一客户端发送的携带有检索词的检索请求,其中,该第一客户端为与服务器建立连接的任一个客户端。
需要说明的是,上述的第一客户端可以是移动通信设备,可以包括:具有通信功能的智能手机、超移动个人计算机设备;还可以是PC终端设备,可以包括:个人笔记本电脑、个人台式计算机。
可以理解的是,该预定的操作包括但不限于单击,并且该搜索框的形状、大小以及在该第一客户端中的具体位置根据实际应用所设定,在此不作限定。
S102,根据检索词,在Redis缓存中检索与检索请求对应的文档;
其中,Redis缓存是一个高性能的键值存储系统,能够作为缓存框架和队列,因此,在本发明中,通过采用Redis缓存,能够提高检索效率,有效缩短响应第一客户端检索请求的时间,提高用户体验。
S103,在Redis缓存中未检索到与检索请求对应的文档时,调用Sphinx索引服务,在文档数据库中进行检索;
其中,Sphinx是一个基于SQL的全文检索引擎,它可以提供比数据库本身更专业的搜索功能,使得可执行程序更容易实现专业化的全文检索,因此,本发明实施例中,通过采用Sphinx,能够提高检索文档数据库的效率,降低服务器响应第一客户端检索请求的时间,提高用户体验。
应当理解的是,本步骤中的文档数据库是根据实际使用需要采用的数据库,可以是MySQL数据库,还可以是PostgreSQL,这里不作限定。
S104,在文档数据库中检索到与检索请求对应的文档时,获取与检索请求对应的文档,并返回与检索请求对应的文档给第一客户端。
在进行检索时,检索的对象可以是文档的标题、文档的作者、文档摘要或内容,在根据检索词检索到与检索请求对应的文档时,生成至少包括文档的标题、文档的作者、文档摘要和文档内容的页面,并返回给第一客户端。
可以理解的是,在获取的是第一客户端通过网页浏览器发送的检索请求时,相应的,生成至少包括文档的标题、文档的作者、文档摘要和文档内容的页面是能够被第一客户端浏览器识别的页面;
在获取的是第一客户端通过安装在第一客户端上的可执行程序发送的检索请求时,相应的,生成至少包括文档的标题、文档的作者、文档摘要和文档内容的页面是能够被安装在第一客户端上的可执行程序识别的页面。
在本发明实施例中,通过在获取第一客户端发送的检所请求后,先从Redis缓存中检索,在未检索到的情况下,再调用Sphinx索引服务在文档数据库中进行检索,检索到与检索请求对应的文档后,发送给第一客户端,可以有效降低访问文档数据库的次数,并且,通过采用Redis缓存和Sphinx索引服务能够提高服务器处理速度,从而提高用户体验。
如图2所示,为本发明实施例的一种检索的方法的第二种实施方式的流程图,所述的方法还可以包括:
S202,根据检索词,在预设关键词库中进行检索,得到与检索词对应的同义词和近义词;
需要说明的是,预设关键词库是在建立文档数据库时,对文档数据库中的文档进行文档分析得到的关键词库,其中,关键词分析属于现有技术,此处不再赘述。
相应的,根据检索词,在Redis缓存中检索与检索请求对应的文档,包括:
S203,根据检索词、与检索词对应的同义词和近义词,在Redis缓存中检索与检索请求对应的文档。
为了更清楚地说明检索词与对应的同义词和近义词之间的关系,下面举例说明:
例如:“边境”的同义词为“边陲”、近义词为“边疆”;“迥然不同”的同义词为“截然不同”、近义词为“天壤之别”。
通过采用检索词、与检索词对应的同义词和近义词进行检索,能够扩大检索范围,更容易在Redis缓存中检索到与第一客户端的检索请求对应的文档,从而降低访问文档数据库的次数,缩短服务器端响应第一客户端的检索请求的时间。
具体地,文档数据库由MySQL数据库组成。
由于Sphinx索引服务为MySQL数据库设计专有的存储引擎插件,使得Sphinx索引服务与MySQL数据库能够更好的兼容,因此,能够更高效的进行检索,进一步提高检索效率,降低服务器响应第一客户端检索请求的时间。
需要说明的是,本发明实施例的一种检索的方法中的其他步骤与第一种实施方式中的方法相同或相似,可以相互结合实施,此处不再赘述。
如图3所示,为本发明实施例的一种检索的方法的第三种实施方式的流程图,所述的检索的方法还可以包括:
S305,在文档数据库中检索到与检索请求对应的文档时,缓存与检索请求对应的文档到Redis缓存,并返回与检索请求对应的文档给第一客户端;
通过在检索到与检索请求对应的文档后,缓存与检索请求对应的文档到Redis缓存,使得与服务器建立连接的其他客户端在检索上述文档时,在Redis缓存中就能够检索到上述文档,不需要在数据库中进行检索,降低访问数据库的次数。
S306,在Redis缓存中检索到与检索请求对应的文档时,获取与检索请求对应的文档,并返回与检索请求对应的文档给第一客户端。
下面结合具体的应用实例,对本发明实施例所提供的一种检索的方法进行介绍。
假设文档数据库中包括:文字动态数据库、文字直播数据库、视频直播数据库和话题讨论数据库。在建立文档数据库时,首先将文档缓存到Redis缓存中,再永久的存储到文档数据库中。例如,获取文字动态文档后,首先缓存到Redis缓存中,再永久的存储到文字动态数据库中。
当服务器监听到客户端A有检索请求时,获取该客户端A发送的携带有检索词的检索请求,根据该客户端A发送的检索请求中的检索词,进行关键词分析,得到与所述检索词对应的同义词和近义词,再根据检索词、与检索词对应的同义词和近义词进行检索时,在Redis缓存中进行检索。
相应于上述方法实施例,本发明实施例提供了一种检索的装置,如图4所示,为本发明实施例的一种检索的装置的第一种实施方式的结构图,所述装置可以包括:
获取模块401,用于获取第一客户端发送的携带有检索词的检索请求;
Redis检索模块402,用于根据检索词,在Redis缓存中检索与检索请求对应的文档;
文档数据库检索模块403,用于在Redis缓存中未检索到与检索请求对应的文档时,调用Sphinx索引服务,在文档数据库中进行检索;
返回模块404,用于在文档数据库中检索到与检索请求对应的文档时,获取与检索请求对应的文档,并返回与检索请求对应的文档给第一客户端。
在本发明实施例中,通过在获取第一客户端发送的检所请求后,先从Redis缓存中检索,在未检索到的情况下,再调用Sphinx索引服务在文档数据库中进行检索,检索到与检索请求对应的文档后,发送给第一客户端,可以有效降低访问文档数据库的次数,并且,通过采用Redis缓存和Sphinx索引服务能够提高服务器处理速度,从而提高用户体验。
需要说明的是,本发明实施例的装置是应用上述检索的方法的装置,则上述检索的方法的所有实施例均适用于该装置,且均能达到相同或相似的有益效果。
如图5所示,为本发明实施例的一种检索的装置的第二种实施方式的流程图,所述的检索的装置还可以包括:
词语检索模块502,用于根据检索词,在预设关键词库中进行检索,得到与检索词对应的同义词和近义词;
相应的,Redis检索模块503,还用于根据检索词、与检索词对应的同义词和近义词,在Redis缓存中检索与检索请求对应的文档。
具体地,返回模块505,还用于在Redis缓存中检索到与检索请求对应的文档时,获取与检索请求对应的文档,并返回与检索请求对应的文档给第一客户端。
具体地,文档数据库由MySQL数据库组成。
具体地,Redis检索模块503,还用于在返回与检索请求对应的文档给第一客户端之前,缓存与检索请求对应的文档到Redis缓存。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。