本发明涉及互联网搜索技术领域,尤其涉及一种基于elasticsearch的云盘搜索方法、系统、服务器及存储介质。
背景技术:
从1946年诞生了世界上第一台电子计算机开始,计算机就绵延不绝的开发和创造知识。互联网上的信息成爆炸式增长,开启了互联网信息爆炸的时代,要想拥有先进的生产力,就必须依赖于信息化,而信息化的发展也是当今时代的大势所趋。由于近些年来云盘(网盘)技术的兴起,云盘安全稳定、海量存储、可随时随地实现共享文件的特点越来越受用户的青睐。
elasticsearch(实时分布式搜索和分析引擎),是一个基于lucene的全文搜索服务,是当前流行的企业级搜索引擎。
国内外研究技术现状从技术层面来看,目前国内外网盘搜索引擎实现原理大致分为两派:(1)自定义爬虫程序,使用自定义爬虫的代表有:盘找找、去转盘网等。(2)调用百度三方接口供搜索,google自定义搜索等,使用google自定义搜索的代表有:西林街、盘搜等。自定义爬虫程序的网盘搜索引擎优于调用google接口的网盘搜索引擎,原因在于自定义爬虫程序可以定制资源的搜索,从而达到准确查找资源的目的,而调用google接口,受制于google,这就是为什么通过google自定义搜索出来的资源有效性差(随着百度云的升级,google不能有效的去除失效链接);另一方面,调用google接口需要翻墙,从而导致了搜索速度的下降,影响用户体验。
然而现有运用自定义爬虫程序的云盘搜索系统均存在如下几个带有共性的问题:
(1)检索资速度比较慢;
(2)缺乏资源分享功能;
(3)部分网站没有向用户推荐相关资源的功能;
(4)资源类型划分不明确,所有资源混在一起;
(5)用户输入关键字时不友好,没有提示。
技术实现要素:
本发明所要解决的技术问题是针对上述现有技术的不足,提供一种基于elasticsearch的云盘搜索方法、系统、服务器及存储介质。
本发明解决上述技术问题的技术方案如下:
一种基于elasticsearch的云盘搜索方法,包括以下步骤:
接收用户输入的搜索信息,对所述搜索信息进行解析,并根据解析结果生成可识别的搜索命令;
基于elasticsearch搜索方法,根据所述搜索命令获取与所述搜索信息对应的目标搜索资源并存储;
将所述目标搜索资源返回至所述用户并显示。
本发明的有益效果是:由于elasticsearch(实时分布式搜索和分析引擎)是一个基于lucene的全文搜索服务器,elasticsearch实时搜索更强,支持扩展多台服务器,拥有处理pb级数据的能力,且当其中一个节点出现了故障,elasticsearch能够自动分配可用节点进行替代,检索到资源后直接返回给用户;因此与传统的资源搜索方法相比,本发明基于elasticsearch搜索方法,当通过接收并解析用户的搜索信息后,生成可识别的搜索命令,并直接根据搜索命令获取云盘中的目标搜索资源,能够更加高效地查询到云盘中与用户输入的搜索信息对应的目标搜索资源,减少用户检索资源花费的时间,实时搜索能力更强,处理数据强,速度快,易扩展;
其中,根据解析结果生成可识别的搜索命令,可以调用elasticsearch-sql插件将所述解析结果转换成可识别的json格式的搜索命令。
在上述技术方案的基础上,本发明还可以做如下改进:
进一步:获取所述目标搜索资源的具体步骤包括:
采用网络爬虫的方法根据所述搜索命令爬取与所述搜索信息对应的初始搜索资源;
对所述初始搜索资源进行资源清洗,得到所述目标搜索资源;
将所述目标搜索资源存储入资源数据库中,根据所述资源数据库中的所述目标搜索资源生成索引,并根据所述索引将所述目标搜索资源进行同步。
上述进一步方案的有益效果是:网络爬虫能够按照一定的规则自动的抓取资源,通过网络爬虫的方法便于爬取与搜索信息对应的初始搜索资源,并便于后续进行索引;通过资源清洗,便于获取更符合用户要求的目标搜索资源;现有技术中,由于其数据存储和搜索功能在一个模块进行,在同时进行存储和搜索功能时,会产生io阻塞,即数据资源在被存储功能占用时,数据搜索功能会需要等待数据资源被存储功能释放之后才能实现,同时数据资源被搜索功能占用时,也会造成数据存储无法进行;这样架构会导致系统同时进行两个功能时,互相等待,造成系统的效率过低;本发明通过资源数据库存储目标搜索资源,再通过分布式索引而使目标搜索资源同步,进一步提高实时搜索速度,并保证资源数据库的存储量。
进一步:采用网络爬虫的方法爬取所述初始搜索资源中还包括:
采用quartz的开源作业调度框架调度所述网络爬虫,并采用cron表达式设置所述网络爬虫程序中定时爬取所述初始搜索资源的定时任务。
上述进一步方案的有益效果是:quartz的开源作业调度框架简单易用;网络爬虫采用jsoup,jsoup能够通过html的dom节点、css等快速解析html、文本等,使爬虫更加高效,进一步提高资源实时搜索能力和搜索速度;通过cron表达式来自定义定制的网络爬虫定时任务,可以准确实时地搜索到初始搜索资源,从而促进整个资源搜索过程中的高效有序地进行,其中,网络爬虫可采用jsoup。
进一步:对所述初始搜索资源进行资源清洗后,还包括对所述初始搜索资源进行分类,得到所述目标搜索资源。
上述进一步方案的有益效果是:通过对资源清洗后的初始搜索资源进行分类,能更方便用户快速获取到需要的资源;例如,可根据资源类型进行划分为图片资源、视频资源等,用户在输入搜索信息时,可对应搜索不同资源类型的搜索资源。
进一步:接收所述用户输入的所述搜索信息中还包括:
采用词语联想接口提供根据所述搜索信息中的关键字联想获得的联想搜索信息。
上述进一步方案的有益效果是:通过词语联想接口,当用户输入搜索信息的一个关键字时,可根据输入的关键字进行词语联想,获得联想搜索信息,例如:高频词汇(当前比较流行或者使用比较多的词语),该联想搜索信息对用户表现出提示功能,用户可以直接选择该联想搜索信息进行搜索,明显可以减少用户繁琐的输入,进一步提高资源搜索效率,还可根据该联想搜索信息的提示输入搜索信息,从而便于更加准确地获取到需要的搜索资源,提高用户的体验度。
进一步:将所述目标搜索资源返回至所述用户并显示中还包括:
采用findby方法向所述用户推荐近似搜索资源,且所述近似搜索资源与所述目标搜索资源具有相同属性的关键词。
上述进一步方案的有益效果是:当目标搜索资源返回至用户时,用户可选择其中一个目标搜索资源进行查看资源详情,而通过findby方法,可以直接向用户推荐与该目标搜索资源具有相同属性的关键词的近似搜索资源,用户可根据近似搜索资源进行延伸阅读,方便用户进行获取到更多的相关的搜索资源,用户体验度更高。
进一步:将所述目标搜索资源返回至所述用户并显示后还包括:
采用分享插件分享所述目标搜索资源;或采用下载插件下载所述目标搜索资源。
上述进一步方案的有益效果是:当用户接收并显示目标搜索资源时,可通过分享插件分享给其他用户,或直接通过下载插件下载所需的目标搜索资源,使得不仅仅局限于资源搜索,功能丰富,用户体验感更强,且分享或下载方式简单,操作简单,易于推广。
依据本发明的另一方面,提供了一种基于elasticsearch的云盘搜索系统,包括输入模块、显示模块、处理模块、搜索模块和存储模块;
所述输入模块,用于接收用户输入的搜索信息;
所述处理模块,用于对所述搜索信息进行解析,并根据解析结果生成可识别的搜索命令;
所述搜索模块,用于基于elasticsearch搜索方法,根据所述搜索命令获取云盘中与所述搜索信息对应的目标搜索资源;
所述存储模块,用于存储所述目标搜索资源;
所述处理模块,还用于将所述目标搜索资源返回至所述用户;
所述显示模块,用于显示所述搜索信息和所述目标搜索资源。
本发明的有益效果是:当通过输入模块接收用户输入的搜索信息,并由处理模块解析用户的搜索信息后,生成可识别的搜索命令,搜索模块基于elasticsearch搜索方法,根据搜索命令获取目标搜索资源,能够更加高效地查询到云盘中与用户输入的搜索信息对应的目标搜索资源,减少用户检索资源花费的时间,实时搜索能力更强,处理数据强,速度快,易扩展;
其中,根据解析结果生成可识别的搜索命令,可以调用elasticsearch-sql插件将所述解析结果转换成可识别的json格式的搜索命令。
依据本发明的另一方面,提供了一种基于elasticsearch的云盘搜索服务器,包括处理器、存储器和存储在所述存储器中且可运行在所述处理器上的计算机程序,所述计算机程序运行时实现本发明的一种基于elasticsearch的云盘搜索方法中的步骤。
本发明的有益效果是:通过存储在存储器上的计算机程序,并运行在处理器上,实现本发明的基于elasticsearch的云盘搜索系统,基于elasticsearch搜索方法,获取云盘中的目标搜索资源,能够更加高效地查询到云盘中与用户输入的搜索信息对应的目标搜索资源,减少用户检索资源花费的时间,实时搜索能力更强,处理数据强,速度快,易扩展。
依据本发明的另一方面,提供了一种计算机存储介质,所述计算机存储介质包括:至少一个指令,在所述指令被执行时实现本发明的一种基于迁移学习的火灾和烟雾预测方法中的步骤。
本发明的有益效果是:通过执行包含至少一个指令的计算机存储介质,实现本发明的云盘搜索方法,基于elasticsearch搜索方法,获取目标搜索资源,能够更加高效地查询到云盘中与用户输入的搜索信息对应的目标搜索资源,减少用户检索资源花费的时间,实时搜索能力更强,处理数据强,速度快,易扩展。
附图说明
图1为本发明一种基于elasticsearch的云盘搜索方法的流程示意图一;
图2为本发明一种基于elasticsearch的云盘搜索方法的流程示意图二;
图3为本发明实施例一中采用百度词语联想接口获得联想搜索信息的示意图;
图4为本发明实施例一中显示目标搜索资源的示意图;
图5为本发明实施例一中分享目标搜索资源的操作界面示意图;
图6为本发明实施例一中下载目标搜索资源的操作界面示意图;
图7为本发明实施例一中目标搜索资源下载保存后的界面示意图;
图8为本发明一种基于elasticsearch的云盘搜索系统的结构示意图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
下面结合附图,对本发明进行说明。
实施例一、如图1所示,一种基于elasticsearch的云盘搜索方法,包括以下步骤:
s1:接收用户输入的搜索信息,对所述搜索信息进行解析,并根据解析结果生成可识别的搜索命令;
s2:基于elasticsearch搜索方法,根据所述搜索命令获取与所述搜索信息对应的目标搜索资源并存储;
s3:将所述目标搜索资源返回至所述用户并显示。
与传统的资源搜索方法相比,本发明基于elasticsearch搜索方法,当通过接收并解析用户的搜索信息后,生成可识别的搜索命令,并直接根据搜索命令进行获取目标搜索资源,能够更加高效地查询到云盘中与用户输入的搜索信息对应的目标搜索资源,减少用户检索资源花费的时间,实时搜索能力更强,处理数据强,速度快,易扩展。
本实施例中通过手机或pc上的浏览器进入资源检索网站,用户在该资源检索网站上输入搜索信息,elasticsearch服务器对该搜索信息进行解析,并调用elasticsearch-sql插件将解析结果转换成elasticsearch服务器可识别的json格式的搜索命令,elasticsearch服务器根据该格式的搜索命令进行资源搜索。
优选地,如图2所示,在s2中,获取所述目标搜索资源的具体步骤包括:
采用网络爬虫的方法根据所述搜索命令爬取与所述搜索信息对应的初始搜索资源;
对所述初始搜索资源进行资源清洗,得到所述目标搜索资源;
将所述目标搜索资源存储入资源数据库中,根据所述资源数据库中的所述目标搜索资源生成索引,并根据所述索引将所述目标搜索资源进行同步。
网络爬虫能够按照一定的规则自动的抓取资源,通过网络爬虫的方法便于爬取与搜索信息对应的初始搜索资源,并便于后续进行索引;通过资源清洗,便于获取更符合用户要求的目标搜索资源;现有技术中,由于其数据存储和搜索功能在一个模块进行,在同时进行存储和搜索功能时,会产生io阻塞,即数据资源在被存储功能占用时,数据搜索功能会需要等待数据资源被存储功能释放之后才能实现,同时数据资源被搜索功能占用时,也会造成数据存储无法进行;这样架构会导致系统同时进行两个功能时,互相等待,造成系统的效率过低;本实施例通过资源数据库存储目标搜索资源,再通过分布式索引而使目标搜索资源同步,进一步提高实时搜索速度,并保证资源数据库的存储量。
本实施例的资源数据库为mongodb数据库,mongodb数据库介于关系型数据库和非关系型数据库之间,拥有两种数据库的优点,数据存储支持xml、json、bson等类型,且mongodb数据库读写速度快,支持高扩展,进一步提高实时搜索能力和搜索速度。
优选地,如图2所示,采用网络爬虫的方法爬取所述初始搜索资源中还包括:
采用quartz的开源作业调度框架调度所述网络爬虫,并采用cron表达式设置所述网络爬虫程序中定时爬取所述初始搜索资源的定时任务。
本实施例网络爬虫具体采用jsoup,并采用quartz的开源作业调度框架来调度该网络爬虫jsoup,该框架简单易用,而网络爬虫jsoup能够通过html的dom节点、css等快速解析html、文本等,使爬虫更加高效,进一步提高资源实时搜索能力和搜索速度;本实施例还采用cron表达式来自定义定制的网络爬虫定时任务,可以准确实时地搜索到初始搜索资源,从而促进整个资源搜索过程中的高效有序地进行。
优选地,如图2所示,对所述初始搜索资源进行资源清洗后,还包括对所述初始搜索资源进行分类,得到所述目标搜索资源。
本实施例将初始搜索资源进行划分,包含视频、图片、电子书等资源类型,方便用户分类检索资源。
优选地,如图2所示,接收所述用户输入的所述搜索信息中还包括:
采用词语联想接口提供根据所述搜索信息中的关键字联想获得的联想搜索信息。
通过词语联想接口,当用户输入搜索信息的一个关键字时,可根据输入的关键字进行词语联想,获得联想搜索信息,例如:高频词汇(当前比较流行或者使用比较多的词语),该联想搜索信息对用户表现出提示功能,用户可以直接选择该联想搜索信息进行搜索,明显可以减少用户繁琐的输入,进一步提高资源搜索效率,还可根据该联想搜索信息的提示输入搜索信息,从而便于更加准确地获取到需要的搜索资源,提高用户的体验度。
本实施例通过pc浏览器进入“百度网盘资源搜索系统”,在该系统的搜索栏中输入搜索信息中的关键字“ja”时,通过百度词语联想接口获取到一系列包含该“ja”的联想搜索信息,例如“java”、“javascript”、“java环境变量设置”等,且这一系列联想搜索信息中的关键字“ja”均作标红处理,更方便用户查阅,提高用户体验度,用户可根据实际需要搜索的搜索信息来确定是否直接选择这些联想搜索信息,具体示意图如图3所示。
本实施例用户直接选择“java”,通过elasticsearch服务器获取到与“java”相关的网盘资源列表,并通过用户的pc显示出,如图4所示。
优选地,如图2所示,将所述目标搜索资源返回至所述用户并显示中还包括:
采用findby方法向所述用户推荐近似搜索资源,且所述近似搜索资源与所述目标搜索资源具有相同属性的关键词。
当目标搜索资源返回至用户时,用户可选择其中一个目标搜索资源进行查看资源详情,而通过findby方法,可以直接向用户推荐与该目标搜索资源具有相同属性的关键词的近似搜索资源,用户可根据近似搜索资源进行延伸阅读,方便用户进行获取到更多的相关的搜索资源,用户体验度更高。
本实施例具体采用jpa自带的findtop10byusername方法,通过向用户推荐前十条近似搜索资源。
优选地,如图2所示,将所述目标搜索资源返回至所述用户并显示后还包括:
采用分享插件分享所述目标搜索资源;或采用下载插件下载所述目标搜索资源。
当用户接收并显示目标搜索资源时,可通过分享插件分享给其他用户,或直接通过下载插件下载所需的目标搜索资源,使得不仅仅局限于资源搜索,功能丰富,用户体验感更强,且分享或下载方式简单,操作简单,易于推广。
本实施例,当用户选择一条目标搜索资源“java基础到高级全套课程”阅读资源详情时,通过点击该目标搜索资源标题右方的分享按钮,通过百度网盘资源搜索系统内部的百度分享插件,可以将包含该目标搜索资源的页面或链接分享至其他用户或其他平台,其中,分享平台广泛,包括微信、qq、有道云等,具体操作界面示意图如图5所示,此外,用户还能单独的复制该目标搜索资源的网页上的一个词或一段话分享给其他用户或其他平台;该目标搜索资源标题右方还设有下载按钮,用户通过百度网盘资源搜索系统内部的下载插件,可以将该目标搜索资源下载至该用户账号下的百度网盘中,以便永久查阅,具体操作界面示意图如图6所示,下载后保存的示意图如图7所示。
实施例二、如图8所示,一种基于elasticsearch的云盘搜索系统,包括输入模块、显示模块、处理模块、搜索模块和存储模块;
所述输入模块,用于接收用户输入的搜索信息;
所述处理模块,用于对所述搜索信息进行解析,并根据解析结果生成搜索服务器可识别的搜索命令;
所述搜索模块,用于基于elasticsearch搜索方法,所述搜索服务器根据所述搜索命令获取与所述搜索信息对应的目标搜索资源;
所述存储模块,用于存储所述目标搜索资源;
所述处理模块,还用于将所述目标搜索资源返回至所述用户;
所述显示模块,还用于显示所述搜索信息和所述目标搜索资源。
当通过显示模块接收用户输入的搜索信息,并由处理模块解析用户的搜索信息后,生成可识别的搜索命令,搜索模块基于elasticsearch搜索方法,根据搜索命令进行获取目标搜索资源,能够更加高效地查询到与用户输入的搜索信息对应的目标搜索资源,减少用户检索资源花费的时间,实时搜索能力更强,处理数据强,速度快,易扩展。
实施例三、基于实施例一和实施例二,本实施例还公开了一种基于elasticsearch的云盘搜索服务器,包括处理器、存储器和存储在所述存储器中且可运行在所述处理器上的计算机程序,所述计算机程序运行时实现如图1所示的以下步骤:
s1:接收用户输入的搜索信息,对所述搜索信息进行解析,并根据解析结果生成可识别的搜索命令;
s2:基于elasticsearch搜索方法,根据所述搜索命令获取与所述搜索信息对应的目标搜索资源并存储;
s3:将所述目标搜索资源返回至所述用户并显示。
通过存储在存储器上的计算机程序,并运行在处理器上,实现本发明的基于elasticsearch的云盘搜索系统,基于elasticsearch搜索方法,获取目标搜索资源,能够更加高效地查询到云盘中与用户输入的搜索信息对应的目标搜索资源,减少用户检索资源花费的时间,实时搜索能力更强,处理数据强,速度快,易扩展。
本实施例还提供一种计算机存储介质,所述计算机存储介质上存储有至少一个指令,所述指令被执行时实现所述s1-s3的具体步骤。
通过执行包含至少一个指令的计算机存储介质,实现本发明的云盘搜索方法,基于elasticsearch搜索方法,获取目标搜索资源,能够更加高效地查询到云盘中与用户输入的搜索信息对应的目标搜索资源,减少用户检索资源花费的时间,实时搜索能力更强,处理数据强,速度快,易扩展。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。