资源搜索方法、装置、设备及存储介质
文献发布时间:2023-06-19 11:08:20
技术领域
本公开涉及互联网技术领域,尤其涉及一种资源搜索方法、装置、设备及存储介质。
背景技术
搜索技术是互联网应用中至关重要的技术。搜索技术的基本流程大致为,当用户想要搜索某个资源时,用户在客户端中输入描述资源的内容。客户端将用户输入的内容发给服务端。服务端根据用户输入的内容查询匹配的资源,将资源返回给用户,从而帮助用户快速找到想要的资源。
然而,目前的搜索技术仅限于基于名称、作者、标签等维度搜索,还无法实现基于表情符号搜索。
发明内容
本公开提供一种资源搜索方法、装置、设备及存储介质,以至少解决相关技术中无法基于表情符号搜索的问题。本公开的技术方案如下。
根据本公开实施例的第一方面,提供一种资源搜索方法,包括:
接收来自于客户端设备的搜索请求,所述搜索请求包括基于表情符号搜索资源;
根据所述表情符号进行处理,得到关键词;
根据所述关键词,从索引文件中查询得到资源标识,所述索引文件指示所述关键词与所述资源标识之间的对应关系;
向所述客户端设备发送所述资源标识对应的目标资源。
在一些实施例中,所述根据所述表情符号进行处理,得到关键词,包括:
将所述表情符号转换为文本;
对所述文本进行处理,得到关键词。
在一些实施例中,所述将所述表情符号转换为文本,包括:
根据所述表情符号,从表情信息库中查询得到所述文本,所述表情信息库包括至少一组表情符号与文本之间的对应关系;或者,
对所述表情符号进行编码,得到所述文本;或者,
将所述表情符号输入机器学习模型,通过所述机器学习模型对所述表情符号进行识别,输出所述文本,所述机器学习模型用于根据表情符号识别文本。
在一些实施例中,所述对所述文本进行处理,得到关键词,包括:
对所述文本进行词法分析、语法分析以及语言处理,得到所述关键词。
在一些实施例中,所述方法还包括:
每隔预设时间周期,对所述索引文件进行更新。
在一些实施例中,所述对所述索引文件进行更新,包括:
将所述预设时间周期中新增的第一资源中的表情符号转换为文本,得到第二资源;
根据所述第二资源构建更新后的索引文件。
在一些实施例中,所述方法还包括:
如果所述更新后的索引文件构建成功,使用所述更新后的索引文件替换更新前的索引文件;或者,
如果所述更新后的索引文件构建失败,继续使用更新前的索引文件提供搜索服务。
在一些实施例中,所述目标资源为用于生成多媒体文件的素材。
根据本公开实施例的第二方面,提供一种资源搜索装置,包括:
接收单元,被配置为执行接收来自于客户端设备的搜索请求,所述搜索请求包括基于表情符号搜索资源;
处理单元,被配置为执行根据所述表情符号进行处理,得到关键词;
查询单元,被配置为执行根据所述关键词,从索引文件中查询得到资源标识,所述索引文件指示所述关键词与所述资源标识之间的对应关系;
发送单元,被配置为执行向所述客户端设备发送所述资源标识对应的目标资源。
在一些实施例中,所述处理单元,被配置为执行将所述表情符号转换为文本;对所述文本进行处理,得到关键词。
在一些实施例中,所述处理单元,被配置为执行根据所述表情符号,从表情信息库中查询得到所述文本,所述表情信息库包括至少一组表情符号与文本之间的对应关系;或者,对所述表情符号进行编码,得到所述文本;或者,将所述表情符号输入机器学习模型,通过所述机器学习模型对所述表情符号进行识别,输出所述文本,所述机器学习模型用于根据表情符号识别文本。
在一些实施例中,所述处理单元,被配置为执行对所述文本进行词法分析、语法分析以及语言处理,得到所述关键词。
在一些实施例中,所述处理单元,还被配置为执行每隔预设时间周期,对所述索引文件进行更新。
在一些实施例中,所述处理单元,被配置为执行将所述预设时间周期中新增的第一资源中的表情符号转换为文本,得到第二资源;根据所述第二资源构建更新后的索引文件。
在一些实施例中,所述处理单元,还被配置为执行如果所述更新后的索引文件构建成功,使用所述更新后的索引文件替换更新前的索引文件;或者,如果所述更新后的索引文件构建失败,继续使用更新前的索引文件提供搜索服务。
在一些实施例中,所述目标资源为用于生成多媒体文件的素材。
根据本公开实施例的第三方面,提供一种电子设备,包括:
一个或多个处理器;
用于存储所述处理器可执行程序代码的一个或多个存储器;
其中,所述一个或多个处理器被配置为执行所述程序代码,以实现上述资源搜索方法。
根据本公开实施例的第四方面,提供一种存储介质,当所述存储介质中的程序代码由电子设备的处理器执行时,使得所述电子设备能够执行上述资源搜索方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述资源搜索方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
本实施例提供一种支持基于表情符号搜索的方法,通过将用户输入的表情符号处理为关键词,然后采用文本检索的方式,根据关键词在索引文件中进行查询,从而找到表情符号相关的资源。通过这种方法,实现了基于表情符号的搜索服务。同时,为搜索服务新增了表情符号这一维度,满足用户使用表情符号搜索的需求。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种资源搜索系统的结构框图;
图2是根据一示例性实施例示出的一种资源搜索方法的流程图;
图3是根据一示例性实施例示出的一种资源搜索方法的流程图;
图4是根据一示例性实施例示出的一种资源搜索装置的框图;
图5是根据一示例性实施例示出的一种服务器的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
首先对本申请实施例涉及的一些概念做解释说明。
MySQL:是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,属于Oracle旗下产品。MySQL是较为流行的关系型数据库管理系统之一。在全球广域网(World Wide Web,web)应用方面,MySQL是较好的RDBMS(Relational Database Management System,关系数据库管理系统)应用软件之一。
Oracle数据库:是甲骨文公司的一款关系型数据库管理系统。Oracle数据库是在数据库领域一直处于领先地位的产品。Oracle数据库系统是目前世界上较为流行的关系数据库管理系统,具有可移植性好、使用方便、功能强,适用于各类大、中、小微机环境等优势。Oracle数据库是一种高效率的、可靠性好的、适应高吞吐量的数据库方案。
Lucene:是apache软件基金会4jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包。但Lucene不是一个完整的全文检索引擎,而是一个全文检索引擎的架构。Lucene提供了完整的查询引擎和索引引擎和部分文本分析引擎。
倒排索引:是一种搜索方式。通俗地来讲,正向索引是通过键(key)找值(value),反向索引则是通过值(value)找键(key)。采用倒排索引技术时会构建词典和倒排表。
词典:包括很多单词。词典可以理解为单词的集合。
单词(Term):一段文本经过分析器分析以后就会输出一串词,这一个一个的词叫做单词。
倒排表:用于记录了出现过某个单词的所有文档的文档列表及单词在该文档中出现的位置信息。倒排表中的每条记录称为一个倒排项(Posting)。根据倒排列表可获知哪些文档包含某个单词。倒排表至少包括文档ID(文档号),可选地还包括词频(Term出现的次数)、偏移量(offset)等。倒排表中的文档ID用于标识出现了词典中单词的文档。
ElasticSearch:是一个基于Lucene的搜索服务器。ElasticSearch提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。
Guava Cache:是Google开发的一个本地缓存组件。
下面对本申请实施例的一个应用场景进行介绍。
伴随着视频编辑应用中视频模版越来越多,在没有搜索的情况下,用户很难找到自己想要的视频模版。因此,需要提供能够根据模版名称、模版的描述、模版的创作者、以及模版的分类标签等多个因素搜索视频模版的方法。搜索视频模版的基本原理是,用户在视频编辑应用的客户端中输入想要查询的模版内容。客户端将用户输入的内容发送给视频编辑应用的服务器。视频编辑应用的服务器根据用户输入的内容与模版中的内容进行相似度的计算。服务器将计算的结果按照相似度从高到低的顺序排列后,返回给用户,从而帮助用户快速的找到自己所需要的模版。
在搜索技术中,对于用户发送过来的字符串内容,目前业界有以下几种处理方法。
(1)在MySQL/Oracle数据库中进行模糊查询,然后把查询的结果返回给客户端。查询的伪代码如下:
Select*from table where col like‘%name%’
此方法在内部搜索系统中比较常用,实现起来比较简单。但一旦数据量比较大或者查询的条件比较复杂,或者用户查询的每秒查询率(Queries-per-second,QPS)较高时,MySQL/Oracle的这种查询方法会比较的耗时。
(2)基于ElasticSearch的搜索方法。ElasticSearch是一种分布式、高扩展、高实时的搜索引擎,此方法的缺点在于需要单独的部署以及维护一套ElasticSearch服务,并且保证其高可用性。
(3)使用Lucene进行搜索。
Lucene的索引采用增量更新的方式。具体地,每当构建Lucene索引所使用的数据发生更新时,都需要对索引数据进行更新。在分布式的Lucene搜索中,需要保证更新数据后索引中所有数据都需要更新。此方案的缺点在于,一方面,在分布式的Lucene搜索中,当数据进行更新时,会存在部分数据更新失败的情况;另一方面,由于在构建索引时没有对文本进行特殊的处理,所以无法对表情符号进行搜索。
上述方案(1)至(3)都具有问题。比如,上述(1)中使用MySQL/Oracle数据库中进行模糊查询,此方案一般用于内部系统,并且MySQL/Oracle无法支撑高QPS的用户查询;上述(2)基于ElasticSearch的搜索方法,需要单独的部署以及维护一套ElasticSearch服务;上述(3)使用Lucene进行搜索,会存在在分布式服务下索引更新失败的情况。而本申请的一些实施例在上述Lucene方案的基础上进行了相应的优化,并且支持表情搜索。
以下,对本公开实施例的硬件环境进行示例性说明。
图1是根据一示例性实施例示出的一种资源搜索系统的结构框图。该资源搜索系统包括:客户端设备101和资源平台110。
客户端设备101通过无线网络或有线网络与资源平台110相连。客户端设备101可以是智能手机、游戏主机、台式计算机、平板电脑、电子书阅读器、MP3(Moving PictureExperts Group Audio Layer III,动态影像专家压缩标准音频层面3)播放器或MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器和膝上型便携计算机中的至少一种。客户端设备101安装和运行有支持资源搜索的应用客户端软件。该应用客户端软件可以是视频编辑应用、直播应用、多媒体应用、短视频应用等。示例性的,客户端设备101是用户使用的终端,应用客户端软件内登录有用户账号。客户端设备101通过无线网络或有线网络与资源平台110相连。
资源平台110包括一台服务器、多台服务器、云计算平台和虚拟化中心中的至少一种。资源平台110用于为应用客户端软件提供后台服务。可选地,在搜索资源的过程中,资源平台110和客户端设备101协同工作。例如,资源平台110承担主要工作,客户端设备101承担次要工作;或者,资源平台110承担次要工作,客户端设备101承担主要工作;或者,资源平台110或客户端设备101分别单独承担工作。
可选地,资源平台110包括:接入服务器、搜索服务器1101和数据库1102。接入服务器用于为客户端设备101提供接入服务。搜索服务器1101用于提供资源搜索有关的后台服务,例如处理用户输入的表情符号、构建索引文件、更新索引文件等等。搜索服务器1101可以是一台或多台。当搜索服务器1101是多台时,存在至少两台搜索服务器1101用于提供不同的服务,和/或,存在至少两台搜索服务器1101用于提供相同的服务,比如以负载均衡方式提供同一种服务,本公开实施例对此不加以限定。数据库1102可以用于存储资源。当需要时,数据库1102可以将存储的资源提供给搜索服务器1101。
客户端设备101可以泛指多个客户端设备中的一个,本实施例仅以客户端设备101来举例说明。
本领域技术人员可以知晓,客户端设备101的数量可以更多或更少。比如客户端设备101可以仅为一个,或者客户端设备101为几十个或几百个,或者更多数量,此时上述资源搜索系统还包括其他客户端设备。本公开实施例对客户端设备的数量和设备类型不加以限定。
图2是根据一示例性实施例示出的一种资源搜索方法的流程图。如图2所示,该资源搜索方法由客户端设备和服务器交互执行,包括以下步骤。
在步骤S21中,客户端设备向服务器发送搜索请求,搜索请求包括基于表情符号搜索资源。
表情符号是指用于充当表情的符号。表情符号的类型包括而不限于图片或者字符串。在表情符号的类型为图片的情况下,表情符号的具体类型包括而不限于静态图片或者动态图片(如GIF动画)。
资源的类型包括而不限于视频、音频、图片、文字等。在一些实施例中,资源是用于生成多媒体文件的素材。例如,资源是用于生成视频的视频模板。在另一些实施例中,资源是商品、话题、微博等。
在一些实施例中,表情符号为搜索请求中的搜索关键词。例如,搜索请求包括查询语句,查询语句中的搜索关键词包括表情符号。可选地,在结合表情符号与其他维度一起搜索的场景下,搜索请求还包括表情符号之外的其他搜索关键词。例如,搜索请求除了包括表情符号之外,还包括资源的作者、资源的名称、资源的标签、资源的类型、资源的描述信息等等。
在一些实施例中,搜索请求是基于用户的输入操作触发的。具体地,客户端设备支持输入表情符号的功能。在搜索资源的过程中,用户在客户端设备上执行输入操作,输入表情符号。客户端设备响应于用户的输入操作,根据用户输入的表情符号生成搜索请求。
发起包含表情符号的搜索请求涉及多种场景,下面结合场景一至场景三举例说明。
场景一、客户端设备在多媒体应用中显示搜索界面,搜索界面中包括搜索框。用户点击搜索框后,多媒体应用中显示表情选择控件。用户对表情选择控件触发操作后,多媒体应用显示表情符号界面。表情符号界面包括多个表情符号。用户对表情符号界面中的一个表情符号触发操作后,多媒体应用根据表情符号界面中被触发操作的表情符号,生成并发起搜索请求。
场景二、用户通过输入法软件执行输入操作,输入表情符号对应的拼音。输入法软件根据用户输入的拼音确定对应的表情符号,将表情符号提供给多媒体应用。多媒体应用根据输入法软件提供的表情符号发起搜索请求。
场景三、用户预先从互联网下载了表情符号,或者用户手工编辑了表情符号,将表情符号保存在客户端设备本地。客户端设备根据本地存储中的表情符号发起搜索请求。
在步骤S22中,服务器接收来自于客户端设备的搜索请求。
服务器从搜索请求中获得表情符号,根据表情符号执行后续步骤从而提供搜索服务。
在步骤S23中,服务器将表情符号转换为文本。
表情符号转换出的文本用于描述表情符号。在一些实施例中,一个表情符号所转换出的文本为一个字符串(如一个单词)。在一些实施例中,表情符号转换出的文本是表情符号的Unicode(又称统一码、万国码、单一码)编码。例如,表情符号“笑哭”转换出的文本为“:laughcry:”。表情符号“狗头”转换出的文本为“:dog:”。
如何将表情符号转换为文本存在多种实现方式,下面通过方式一至方式三举例说明。
方式一、服务器根据表情符号,从表情信息库中查询得到文本。
表情信息库用于保存预先配置的表情符号相关的信息。表情信息库包括至少一组表情符号与文本之间的对应关系。例如,表情信息库包括表情符号1与文本1之间的对应关系、表情符号2与文本2之间的对应关系。如果搜索请求中的表情符号命中表情符号1,则服务器获取文本1作为转换出的文本。
在一种可能的实现中,运维人员预先对服务器执行配置操作,例如通过命令行界面或者web界面输入至少一组表情符号与文本。服务器根据配置操作获得至少一组表情符号与文本,根据至少一组表情符号与文本创建表情信息库。
方式二、服务器对表情符号进行编码,得到文本。
例如,服务器对表情符号进行Unicode编码,转换出的文本为编码得到的Unicode编码。
方式三、服务器将表情符号输入机器学习模型,通过机器学习模型对表情符号进行识别,输出文本。
机器学习模型用于根据表情符号识别文本。例如,在表情符号为图片的情况下,机器学习模型为图像识别模型。又如,在表情符号为字符串的情况下,机器学习模型为文本识别模型。机器学习模型包括而不限于卷积神经网络、循环神经网络、决策树模型、随机森林模型等。
可选地,该机器学习模型由服务器根据样本表情符号训练得到。例如,服务器获取样本集,样本集包括多个样本表情符号。样本表情符号的标签为文本。服务器使用样本集进行模型训练,从而获得机器学习模型。
通过方式三,支持将未知的表情符号转换为文本,适于网络中表情符号时常更新的场景,并减少预先配置表情符号对应的文本带来的复杂度。
以上提供了多种将表情符号转换为文本的实现方式,可以根据实际需求采用合适的方式,灵活性高。
在步骤S24中,服务器对文本进行处理,得到关键词。
在一些实施例中,服务器基于自然语言处理(Natural Language Processing,NLP)技术对文本进行处理。具体地,服务器对文本进行词法分析、语法分析以及语言处理,得到关键词。在一种可能的实现中,服务器首先对文本进行词法分析,再根据词法分析的结果进行语法分析,再根据语法分析的结果进行语言处理。
词法分析(lexical analysis)是计算机技术中将字符序列转换为词元(Token)序列的过程,即,将文本从一串连续的字符切分成一个一个的词。本实施例中,词法分析主要是识别单词或词组。
语法分析是在词法分析的基础上将单词序列组合成各类语法短语。本实施例中,语法分析主要是根据查询语句的语法规则来形成一棵语法树。
语言处理主要是对得到的词元(Token)做一些同语言相关的处理。语言处理可选地通过服务器运行的语言处理组件(linguistic processor)执行。例如,在表情符号转换出的文本为英文单词的情况下,语言处理组件例如实现以下几点:第一,将英文单词变为小写(Lowercase)。第二,将英文单词缩减为词根形式,例如将“cars”处理为“car”。这种处理操作称为:词干提取(stemming)。第二,将英文单词转变为词根形式,例如将“drove”处理为“drive”。
通过采用词法分析、语法分析以及语言处理的手段处理文本,能够将表情符号对应的文本的形式规范化,避免文本中的冗余信息、大小写、单复数等因素对后续搜索造成的影响,因此使用处理得到的关键词进行搜索,有助于提高后续搜索的准确性。
上述步骤S23和步骤S24提供根据表情符号处理得到关键词的一种可选实现方式,在另一些实施例中,采用步骤S23和步骤S24之外的其他方式处理表情符号得到关键词。例如,服务器保存关键词表,关键词表包括表情符号与关键词之间的预设对应关系。服务器根据表情符号,从关键词表里查询得到关键词。
在步骤S25中,服务器根据关键词,从索引文件中查询得到资源标识。
资源标识用于标识对应的资源。例如,资源标识为资源的名称、编号、关键字等。
索引文件也称索引库。索引文件指示关键词与资源标识之间的对应关系。在一个示例中,索引文件指示关键词A与资源A的资源标识之间的对应关系、关键词B与资源B的资源标识之间的对应关系。如果根据搜索请求得到的关键词命中关键词A,那么查询出的资源标识为资源A的资源标识。
在一些实施例中,索引文件基于倒排索引技术构建。索引文件包括词典和倒排表。词典包括资源中表情符号转换得到的单词。可选地,词典还包括资源中表情符号之外的其他内容对应的单词。例如,数据库中包括N个资源。N个资源共计包括M个表情符号,此外N个资源还包括P个文本。那么,词典中至少包括M个表情符号转换为的M个单词,可选地还包括P个文本对应的单词。
倒排表用于指示词典中单词对应的表情符号在哪些资源中出现过,倒排表包括出现对应表情符号的资源的资源标识。例如,资源1和资源2中都有一个表示微笑的表情符号,这个表情符号转换为的单词是smile。那么,词典会包括smile,倒排表中会包括资源1的ID和资源2的ID,从而记录微笑的表情符号(smile)在资源1和资源2都出现过。
在步骤S26中,服务器向客户端设备发送资源标识对应的目标资源。
目标资源是指充当搜索结果的资源。服务器会根据资源标识,从资源库中获得目标资源。
其中,资源库包括资源标识与资源之间的对应关系。可选地,资源库保存在服务器的本地缓存中。具体地,服务器预先将资源库加载至本地缓存中。当服务器找到资源标识之后,服务器根据资源标识访问本地缓存,从而获得目标资源。由于缓存具有访问速度快的优势,通过从缓存中获取资源,有助于更快速地向用户提供搜索结果。在另一些实施例中,资源库保存在云端,服务器向云端发送携带资源标识的资源获取请求,云端根据资源标识从资源库获得目标资源,将目标资源返回给服务器。服务器接收云端返回的目标资源。
在一些实施例中,如果服务器查询得到多个目标资源,则服务器根据多个目标资源的权重,对多个目标资源按照权重从高到低的顺序进行排序,使得权重最高的目标资源排在第一个。服务器将排序后的目标资源发送给客户端设备,使得权重越高的目标资源越优先展示。
在一些实施例中,目标资源的权重是根据目标资源的使用量确定的。目标资源的使用量越大,目标资源的权重越大。其中,目标资源的使用量例如是目标资源被用户使用的总次数,目标资源的使用量一定程度上反映了资源的热门程度。通过这种方式,使用量大的资源能够在搜索结果中排在靠前的位置,有助于提高搜索结果的准确性。
在一些实施例中,目标资源的权重是根据目标资源与查询语句的相似度确定的。目标资源与查询语句的相似度越大,目标资源的权重越大。
可选地,目标资源的权重是目标资源的使用量、目标资源与查询语句的相似度的乘积。
在步骤S27中,客户端设备接收目标资源,向用户提供目标资源。
客户端设备提供目标资源的方式包括而不限于展示目标资源、播放目标资源等等。例如,在根据一些素材合成多媒体文件的场景下,服务器搜索出的目标资源为合成多媒体文件时使用的一个素材。服务器或者客户端设备对搜索出的目标资源以及用户提供的资源进行合成,得到多媒体文件。
例如,在制作视频的场景下,服务器搜索出的目标资源例如是一个视频模板,视频模板用于合成视频。比如说,服务器将视频模板发送给客户端设备后,客户端设备在界面中展示视频模板。用户同意使用该视频模板制作视频时,触发确认操作。客户端设备或者服务器对视频模板以及用户制作的视频或者音频进行合成,得到一个视频。
在一些实施例中,服务器会对索引文件定时异步更新。具体地,服务器保存预设时间周期。服务器每隔预设时间周期,对索引文件进行更新。例如,如果预设时间周期设置为T,服务器启动定时器,每当时间经过一个T,则服务器根据T内新增的资源,构建更新后的索引文件,从而更新一次索引文件。服务器通过采用定时异步的方式更新,从而将新增资源的资源标识及时补充到索引文件中,从而确保新增的资源也能被很快的搜索到。
在一些实施例中,服务器在更新索引文件时,会先将资源中的表情符号转换为文本,再构建更新后的索引文件。以表情符号转换前的资源称为第一资源,表情符号转换后的的资源称为第二资源为例,例如,当时间经过一个预设时间周期,服务器将该预设时间周期中新增的第一资源中的表情符号转换为文本,得到第二资源;服务器根据第二资源构建更新后的索引文件。其中,第二资源不包括表情符号。第二资源包括第一资源中表情符号对应的文本,以及第一资源中除了表情符号之外的其他内容。同理地,在一个预设时间周期中新增了多个资源的情况下,将每个新增资源中的表情符号都转换为文本,再根据转换后的多个新增资源构建更新后的索引文件。
在一些实施例中,如果更新后的索引文件构建成功,服务器使用更新后的索引文件替换更新前的索引文件。此外,服务器删除更新前的索引文件。服务器下一次接收到客户端设备发来的搜索请求后,使用更新后的索引文件提供搜索服务。如果更新后的索引文件构建失败,服务器不进行新旧索引文件的替换,也不会删除更新前的索引文件,而是继续使用更新前的索引文件提供搜索服务。通过这种方式,能够降低索引文件更新失败对搜索服务造成的影响。
在一些实施例中,服务器采用全量更新的方式更新索引文件。具体地,服务器每当更新索引文件时,会基于数据库已保存的所有资源,构建更新后的索引文件。换句话说,服务器在构建更新后的索引文件时,不仅会使用当前时间周期内新增的资源,还会使用上一个时间周期已保存的所有资源。通过采用全量更新的方式更新,能够避免新增资源的索引丢失,并提高系统的容错能力。下面结合一个例子对这一效果的原理进行说明。
例如,初始时间点是t0,预设时间周期设置为T。数据库在时间点t0保存了n0个资源。服务器在时间点t0根据n0个资源构建初始的索引文件。初始的索引文件包括n0个资源的标识,使得n0个资源能被用户搜索到。当时间经过第一个预设时间周期,到达时间点(t0+T)时,数据库在时间点(t0+T)保存了(n0+△1)个资源。服务器在时间点(t0+T)根据(n0+△1)个资源构建更新后的索引文件,然而发生索引文件构建失败,那么服务器继续使用初始的索引文件提供搜索服务。当时间经过第二个预设时间周期,到达时间点(t0+2T)时,数据库在时间点(t0+2T)保存了(n0+△1+△2)个资源。服务器在(t0+2T)根据(n0+△1+△2)个资源构建更新后的索引文件。更新后的索引文件包括(n0+△1+△2)个资源的标识。服务器将初始的索引文件替换为更新后的索引文件,使用更新后的索引文件提供搜索服务,使得(n0+△1+△2)个资源能被用户搜索到。通过这个例子可见,虽然在第一个时间周期更新索引文件失败,然而最终不会丢失第一个时间周期内新增的△1个资源。由于采用了全量更新的方式,在第二个时间周期再次更新索引文件时,第二个时间周期重新构建的索引文件会包含第二个时间周期新增的△2个资源以及第一个时间周期内新增的△1个资源,从而保证第一个时间周期内内新增的△1个资源在经过第二个时间周期后能被及时搜索到。
本实施例提供一种支持基于表情符号搜索的方法,通过将用户输入的表情符号处理为关键词,然后采用文本检索的方式,根据关键词在索引文件中进行查询,从而找到表情符号相关的资源。通过这种方法,实现了基于表情符号的搜索服务。同时,为搜索服务新增了表情符号这一维度,满足用户使用表情符号搜索的需求。
下面结合一个实例以及附图3,对附图2所示方法进行说明。附图2所示方法中的资源为下述实例中的模板。附图2所示方法中的候选资源为下述实例中MySQL数据库的模板。附图2所示方法中的目标资源为下述实例中向客户端返回的模板。附图2所示方法中资源标识是下述实例中的模板ID。附图2所示方法中表情符号转换为的文本是下述实例中的单词。下述实例采用Lucene实现。
实例1
步骤一:服务器构建索引文件。
具体地,服务器启动搜索服务后,进行Lucene索引的构建。在一些实施例中,在索引文件构建完成前,服务器会将用户访问的流量均匀分布到已经完全启动的Lucene节点上,而不会将流量分发给正在构建索引的Lucene节点,以避免该Lucene节点不能进行搜索服务导致搜索失败。
可选地,构建索引文件所使用的模板来源于MySQL数据库。服务器在构建索引文件时,首先从MySQL数据库中查询模板。其中,由于搜索服务不仅提供文字内容的搜索,也提供了表情符号的搜索;但在Lucene构建索引时,表情符号会被Lucene默认的删除。所以为了提供表情的搜索,如附图3所示,服务器会将模板中表情符号转化为特定的英文单词,此外,服务器还对英文单词进行词法分析、语法分析以及语言处理,根据处理后的模板构建索引文件。此外,为了保证使用量较大的模版在搜索结果中排在较前的位置,在索引文件进行构建时,服务器会根据模板的使用量为每个模版分配不同的权重。使用量大的模版权重较大。使用量小的模版权重较小。
步骤二:服务器对索引文件定时异步更新。
在搜索服务完全启动后,为了保证MySQL数据库中添加的模板也能被及时的搜索到,索引文件会定时异步的形式进行更新。新的索引文件构建成功后会替换原来旧的索引文件,并将旧的索引文件删除。若新的索引文件在构建中,由于各种问题导致构建失败,这样不会进行新旧索引文件的替换,从而降低对搜索服务的影响。
步骤三:服务器根据索引文件为用户提供搜索服务。
用户在视频编辑APP中输入需要查找的模版相关的内容。视频编辑APP的客户端将用户输入的内容传到视频编辑APP的服务器。服务器收到用户输入的内容后,对用户输入的内容进行相应操作,具体流程如下步骤(3-1)至步骤(3-3)。
步骤(3-1)服务器将用户输入的内容中的表情符号转化为特定的单词,然后服务器再对输入的内容进行词法分析,语法分析以及语言处理,得到关键词。
步骤(3-2)服务器将步骤(3-1)得到的关键词作为搜索索引,搜索得到符合语法树的文档。
首先,服务器在索引文件中,分别找出包含上述分词得到的关键词的文档链表。其次,服务器对包含这些关键词的链表进行合并操作。得到包含这些关键词的所有文档。
步骤(3-3)服务器根据得到的文档和查询语句的相关性,对查询后的模板ID进行排序,将排序后的模板ID作为查询结果。
具体地,对于模板ID按照与查询语句的相关性进行排序,越相关的模板ID在查询结果中越靠前。
步骤四:服务器返回给客户端模版。
具体地,在步骤三中查询到模版ID,则步骤四中根据模版ID查询到具体的模版。例如,服务器预先在本地缓存GuavaCache中存储有模版ID对应模版。服务器根据Lucene搜索返回的模版ID,从缓存中查询出具体的模版,将模板返回给客户端。
通过上述实施例,由于对表情符号进行了特殊的处理,所以模版支持表情符号的搜索。由于索引库进行定时异步的构建,所以MySQL数据库中新添加的模版能够很快的搜索到;服务器根据搜索到的模版ID,能够快速的从本地缓存中读取到相应的模版,保证用户搜索模版几乎在瞬间就得到结果。
图4是根据一示例性实施例示出的一种资源搜索装置框图。参照图4,该装置包括接收单元501、处理单元502、查询单元503和发送单元504。
接收单元501,被配置为执行接收来自于客户端设备的搜索请求,搜索请求包括基于表情符号搜索资源;处理单元502,被配置为执行根据表情符号进行处理,得到关键词;查询单元503,被配置为执行根据关键词,从索引文件中查询得到资源标识,索引文件指示关键词与资源标识之间的对应关系;发送单元504,被配置为执行向客户端设备发送资源标识对应的目标资源。
在一些实施例中,处理单元502,被配置为执行将表情符号转换为文本;对文本进行处理,得到关键词。
在一些实施例中,处理单元502,被配置为执行根据表情符号,从表情信息库中查询得到文本,表情信息库包括至少一组表情符号与文本之间的对应关系;或者,对表情符号进行编码,得到文本;或者,将表情符号输入机器学习模型,通过机器学习模型对表情符号进行识别,输出文本,机器学习模型用于根据表情符号识别文本。
在一些实施例中,处理单元502,被配置为执行对文本进行词法分析、语法分析以及语言处理,得到关键词。
在一些实施例中,处理单元502,还被配置为执行每隔预设时间周期,对索引文件进行更新。
在一些实施例中,处理单元502,被配置为执行将预设时间周期中新增的第一资源中的表情符号转换为文本,得到第二资源;根据第二资源构建更新后的索引文件。
在一些实施例中,处理单元502,还被配置为执行如果更新后的索引文件构建成功,使用更新后的索引文件替换更新前的索引文件;或者,如果更新后的索引文件构建失败,继续使用更新前的索引文件提供搜索服务。
在一些实施例中,查询单元503,被配置为执行:根据关键词,从索引文件中获取至少一个候选资源的资源标识;根据至少一个候选资源的权重,从至少一个候选资源的资源标识中选择目标资源的资源标识,候选资源的权重与候选资源的使用量相关,候选资源的使用量越大,候选资源的权重越大。
在一些实施例中,目标资源为用于生成多媒体文件的素材。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图5是本公开实施例提供的一种服务器的结构示意图,该服务器600可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processingunits,CPU)601和一个或一个以上的存储器602,其中,存储器602中存储有至少一条程序代码,至少一条程序代码由处理器601加载并执行以实现上述各个方法实施例提供的资源搜索方法。当然,该服务器还可以具有有线或无线网络接口以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种包括程序代码的存储介质,例如包括程序代码的存储器,上述程序代码可由电子设备的处理器执行以完成上述资源搜索方法。可选地,存储介质可以是非临时性计算机可读存储介质,例如,该非临时性计算机可读存储介质可以是只读存储器(Read-Only Memory,简称:ROM)、随机存取存储器(Random Access Memory,简称:RAM)、只读光盘(Compact Disc Read-Only Memory,简称:CD-ROM)、磁带、软盘和光数据存储设备等。
本公开所涉及的用户信息可以为经用户授权或者经过各方充分授权的信息。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
- 资源搜索方法、装置、设备及存储介质
- 一种多媒体资源搜索方法、装置、系统、设备及存储介质