CN105630870A - 搜索请求处理方法及*** - Google Patents
搜索请求处理方法及*** Download PDFInfo
- Publication number
- CN105630870A CN105630870A CN201510944546.7A CN201510944546A CN105630870A CN 105630870 A CN105630870 A CN 105630870A CN 201510944546 A CN201510944546 A CN 201510944546A CN 105630870 A CN105630870 A CN 105630870A
- Authority
- CN
- China
- Prior art keywords
- dictionary
- node
- line
- search
- routing node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例提出一种搜索请求处理方法及***,可以实现对请求串的快速压缩和解压缩,同时压缩的结果也比较小。所述方法包括:路由节点接收客户端发送的搜索请求,所述搜索请求中包括用户通过所述客户端输入的请求串;所述路由节点利用字典压缩算法,使用预先加载的字典将所述请求串压缩为压缩编码;所述路由节点将所述压缩编码与所述字典的版本号发送给所述搜索节点;所述搜索节点使用与所述版本号对应的字典,对所述压缩编码进行解压缩。
Description
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种搜索请求处理方法及***。
背景技术
在搜索***中每一次查询都会检索到数百个节点的服务,在一次查询中,一个较小的请求串(query),在经过了搜索***的多层处理后,可能会附加大量的信息,比如和请求串中的词条(term)的权重、位置、紧密度、相关词、同义词、类目等信息,以及其他的***附加的信息,如时效性、点击数据、展现数据等,还有与查询者相关的位置信息、访问信息等。这样当一个普通的query到达检索***的底层时,其query的大小增加是数十倍甚至数百倍。这样当大量的query从上游发送到检索***的路由节点(router节点),router节点将该query处理后,会继续发送到其下游的数百个或上千个节点上,这样单个query的产生的网络流量又扩大了数百倍,在该场景下,搜索引擎将承受大量的网络流量,一旦达到网卡的流量上限,就会造成大量的query丢包、无法返回搜索结果等影响。
传统的搜索引擎往往采用的是将单条query进行压缩后再传输到下游节点,下游节点再对query进行解压缩。这样只能做到发送一条请求串压缩一条,现有的压缩算法如gzip等,无法既保证压缩后的query的足够小又保证压缩、解压的速度快。因此,如何能够对query进行快速压缩和解压缩,同时压缩的结果又尽量小,成为现在亟待解决的问题。
发明内容
本发明的目的在于提供一种搜索请求处理方法及***以实现对query进行快速压缩和解压缩,同时保证压缩的结果尽量小。
为了实现上述目的,本发明实施例采用的技术方案如下:
第一方面,本发明实施例提供了一种搜索请求处理方法,应用于搜索请求处理***中,所述***包括路由节点以及搜索节点,所述路由节点与所述搜索节点均预先加载有用于压缩和解压缩的字典,所述方法包括:所述路由节点接收客户端发送的搜索请求,所述搜索请求中包括用户通过所述客户端输入的请求串;所述路由节点利用字典压缩算法,使用预先加载的字典将所述请求串压缩为压缩编码;所述路由节点将所述压缩编码与所述字典的版本号发送给所述搜索节点;所述搜索节点使用与所述版本号对应的字典,对所述压缩编码进行解压缩。
第二方面,本发明实施例提供了一种搜索请求处理***,所述***包括路由节点以及搜索节点,所述路由节点与所述搜索节点均预先加载有用于压缩和解压缩的字典,其中,所述路由节点用于接收客户端发送的搜索请求,所述搜索请求中包括用户通过所述客户端输入的请求串,利用字典压缩算法,使用预先加载的字典将所述请求串压缩为压缩编码,将所述压缩编码与所述字典的版本号发送给所述搜索节点;所述搜索节点用于使用与所述版本号对应的字典,对所述压缩编码进行解压缩。
本发明实施例提供的搜索请求处理方法和***,路由节点接收到客户端发送的包含请求串的搜索请求后,利用字典压缩算法,使用预先加载的字典将请求串压缩为压缩编码,压缩比大幅高于传统的直接压缩,由于搜索节点中也加载有与路由节点中启用的字典具有相同版本号的字典,因此搜索节点可以根据预先加载的字典对压缩编码进行快速解压缩,得到对应的请求串,可以保证压缩的结果尽量小,同时实现了对query进行快速压缩和解压缩。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本发明第一实施例提供的一种搜索请求处理方法的流程示意图;
图2示出了本发明第二实施例提供的一种搜索请求处理方法的流程示意图;
图3示出了图2中部分流程的具体流程示意图;
图4示出了本发明第三实施例提供的一种搜索请求处理方法的流程示意图;
图5示出了本发明第四实施例提供的一种搜索请求处理***的***框图。
具体实施方式
本发明实施例提供的搜索请求处理方法及***可以应用于图5所示的搜索***中,如图1所示,所述搜索***可以包括构建节点、路由(router)节点、搜索(searcher)节点和管理(admin)节点。
假设搜索***包括1个管理节点、X路由节点以及M行N列共M*N个搜索节点。管理节点会维持与所有的搜索节点的链接以及与每个路由节点之间的链接。当一个路由节点接收到一个请求串,该路由节点就会从N列中选取需要进行查询的Q(Q<=N)列搜索节点来查询。这样,每个请求串都会经过一次路由节点的压缩和Q次搜索节点的解压缩。
于本发明实施例中,构建节点用于对离线的请求串进行训练,构建离线字典(包括全量字典和增量字典),并将构建好的离线字典发送给路由节点和搜索节点,路由节加载并启用该字典后,采用字典压缩算法,可以将请求串压缩为压缩编码,压缩比大幅高于传统的直接压缩,由于搜索节点中也加载有与路由节点中启用的字典具有相同版本号的字典,因此搜索节点可以根据预先加载的字典对压缩编码进行解压缩,得到对应的请求串,可以保证压缩的结果尽量小,同时实现了对query进行快速压缩和解压缩。
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
第一实施例
图1示出了本发明第一实施例提供的一种搜索请求处理方法的流程图,请参阅图1,所述方法包括:
步骤S110,路由节点接收客户端发送的搜索请求,所述搜索请求中包括用户通过所述客户端输入的请求串;
用户通过键盘、语音、手写等方式将想要搜索的内容输入客户端后,客户端会将其转换为包含多个字符的请求串,其中,请求串中的字符可以包括文字、拼音、符号、数字或者他们的组合。客户端会向路由节点发送包含该请求串的搜索请求。
步骤S120,所述路由节点利用字典压缩算法,使用预先加载的字典将所述请求串压缩为压缩编码;
当路由节点接收到所述搜索请求后,可以直接采用字典压缩算法对该搜索请求中的请求串进行压缩。其中,字典压缩算法可以,但不限于采用LZW等字典压缩算法。经过字典压缩算法压缩后的请求串被压缩为压缩编码,具体压缩编码的形式与所采用的字典压缩算法有关系,本发明具体实施方式对此不做限定。
路由节点中预先加载的字典可以包括多份字典,可以包括预先加载的离线字典也可以包括动态的在线字典,路由节点在进行压缩时,会同时使用多份字典进行压缩。
步骤S130,所述路由节点将所述压缩编码与所述字典的版本号发送给所述搜索节点;
与路由节点相同,搜索节点中预先加载的字典也可以包括多份字典,可以包括预先加载的离线字典也可以包括动态的在线字典。
路由节点对请求串完成压缩后,将与该请求串对应的压缩编码以及压缩该请求串时所使用的字典的版本号发送给搜索节点,以便于搜索节点根据该版本号查找对应的字典,对该压缩编码进行解压缩。
步骤S140,所述搜索节点使用与所述版本号对应的字典,对所述压缩编码进行解压缩。
搜索节点根据路由节点传输过来版本号,查找到与所述版本号对应的字典,再根据路由节点传输过来的压缩编码,逐个读取该字典中对应的内容,从而做到快速解压缩请求串。
本实施例提供的搜索请求处理方法,路由节点接收到客户端发送的包含请求串的搜索请求后,利用字典压缩算法,使用预先加载的字典将请求串压缩为压缩编码,压缩比大幅高于传统的直接压缩,由于搜索节点中也加载有与路由节点中启用的字典具有相同版本号的字典,因此搜索节点可以根据预先加载的字典对压缩编码进行快速解压缩,得到对应的请求串,可以保证压缩的结果尽量小,同时实现了对query进行快速压缩和解压缩。
发明人对本***进行了实际测试,通过对大量的搜索节点进行压力测试,在大量的请求串的高负载下本发明中的方案表现较好。在现实场景中,从上游到达路由节点的请求串的大小平均为2.35Kb,平均的Qps(每秒的请求数)约为5000,这样如果只有单台路由节点的话,平均流入的流量在5000*2.35/1024=11.5Mb,假设每条请求串要发送到约300台的检索节点上,则此时流出的流量在11.5Mb*300=3450Mb,这样单个节点的网卡肯定是承受不住的。即便是采用10个节点进行分担流量,流出的流量也在345Mb,超出了千兆网卡128Mb/s的流出大小限制。在采用了本发明的快速压缩和解压缩的方法后,请求串的大小从平均2.35Kb减少到了0.67Kb,大约为原始大小的28%,而压缩和解压缩耗费的平均时间在0.01ms以内。如果使用gzip的压缩算法,请求串压缩后的平均大小为0.91Kb,压缩和解压缩耗费的时间是本发明方法的8倍。因此,本发明实施例提供的方法相较于不压缩以及使用gzip压缩均具备较大的优势。
第二实施例
图2示出了本发明第二实施例提供的一种搜索请求处理方法的流程图。请参阅图2,本实施例描述的搜索请求处理过程中全量离线字典的构建和更新的流程,因此,本实施例中的离线字典(除非特指)均是全量离线字典。具体的,所述方法包括:
步骤S210,构建节点对离线请求串进行训练,构建离线字典;
优选的,构建节点可以在网络不是很繁忙的时段(例如晚上0点至早上6点)对离线请求串进行训练,构建离线字典。
请参照图3,具体的,步骤S210可以包括:
步骤S211,根据所述离线请求串建立字典树;
具体的,可以先确定离线请求串的类型,在搜索***中,常见的请求串的类型可以包括查询请求串、统计请求串、健康检查请求串等类型,当然,本发明的具体实施方式并不以请求串的具体类型为限。如果所述离线请求串中不属于预定类型的请求串的数量未超过预定数量时,构建全量离线字典;如果所述离线请求串中不属于预定类型的请求串的数量超过预定数量,则对所述离线请求串单独进行训练,构建增量离线字典,增量离线字典的更新过程请参照第三实施例。
在构建离线字典的过程中,针对不同类型的请求串分别建立字典树。建立字典树的方法可以使用Trie树(又称单词查找树,是一种树形结构)的建立方法,这里不再赘述。统计出字典树中每个叶子节点的数目,将数目低于预定值的叶子节点删除。
在一种具体的实施方式中,从所有的路由节点上获取到从其上游发送的所有的离线请求串的文本信息(未进行压缩)。然后启动一个分布式的MapReduce任务,在Map任务中,首先将请求串所在节点进行划分到不同Map任务的instance中,然后根据请求串中的分隔符(;&&等)将请求串切割为一个个的文本单元,其次对于每个文本单元都输入到Trie树中进行查找,如果找到了则对该子节点的数目进行加1,如果没有找到,则创建该叶子节点,初始化数目为1,直到该instance读取完所有的请求串。这样,每个Map任务的instance都创建成功一个Trie树,然后再Reduce任务中,对这些Map任务的结果(Trie树)进行合并和霍夫曼编码。对于出现数目低于某个阈值的叶子节点进行删除,由于采用了霍夫曼编码,则对于出现频率最高的文本单元采用最短的编码长度。同时,在Map任务中对于不同类型的请求串都创建了不同类型的字典树,因此Reduce任务中的字典也是和不同类型的请求串相互对应。
步骤S212,将建立好的字典树进行合并,将合并后的字典树进行霍夫曼编码,得到所述离线字典。
由于霍夫曼编码是一种无损数据压缩的熵编码,能够使得压缩后的请求串最小,压缩后的请求串是由“0”和“1”组合而成的霍夫曼编码。
步骤S220,所述构建节点通过管理节点将所述离线字典的信息发送到所述路由节点和所述搜索节点;
当所述管理节点接收到由所述构建节点发送的更新字典的指令时,将所述离线字典的信息分别发送到所述路由节点和所述搜索节点,所述离线字典的信息包括所述离线字典的大小、版本信息以及文件位置等。
优选的,可以在凌晨等搜索流量负载较小的时候,将离线字典发送到路由节点和搜索节点。
如果字典的版本不同的话,将无法进行解压缩。本实施例中,构建节点通过管理节点将离线字典分别发送到路由节点和搜索节点,可以保证路由节点和搜索节点之间字典的版本保持一致,从而保证能够正确的压缩和解压缩。
步骤S230,所述路由节点与所述搜索节点根据所述离线字典的信息对预先加载的字典进行全量更新;
搜索节点以及路由节点会根据离线字典的信息,将字典下载下来,同时将对应字段下载到自己的内存,但是不会直接使用该字典。
步骤S240,所述路由节点与所述搜索节点完成对所述离线字典的加载后,将所述离线字典的加载列表通过心跳信息发送给所述管理节点;
步骤S250,所述管理节点检查所有的路由节点和搜索节点是否均完成了更新,如果是,则向所述路由节点发送启用新字典的通知;
当所述管理节点接收到所有路由节点和搜索节点发送的加载列表时,判定所有的路由节点和搜索节点均完成了更新。
步骤S260,所述管理节点向所述路由节点和所述搜索节点发送释放命令;
步骤S270,所述路由节点与所述搜索节点释放与所述释放命令中的版本号对应的字典。
通过对字典进行释放,可以有效的减少内存的负担。
另外,所述路由节点和搜索节点在每隔一个预定周期(一般设置为0.2s~1s)向所述管理节点发送一次心跳信息,所述心跳信息中包括当前所加载的字典的版本信息,以使管理节点了解路由节点与搜索节点中字典的版本情况。
第三实施例
图4示出了本发明第三实施例提供的一种搜索请求处理方法的流程图。请参阅图4,本实施例描述的搜索请求处理过程中增量离线字典的构建和更新的流程,因此,本实施例中的离线字典(除非特指)均是增量离线字典。具体的,所述方法包括:
步骤S310,如果所述离线请求串中不属于预定类型的请求串的数量超过预定数量,则对所述离线请求串单独进行训练,构建增量离线字典。
具体的构建过程可以参照第二实施例,这里不再赘述。
步骤S320,所述管理节点将所述增量离线字典的信息发送到所述路由节点和所述搜索节点,所述增量离线字典的信息包括增量离线字典的版本号以及当前全量离线字典的版本号;
当所述管理节点接收到由构建节点发送的更新字典的指令时,将所述离线字典的信息分别发送到所述路由节点和所述搜索节点,所述离线字典的信息包括所述离线字典的大小、版本信息以及文件位置
步骤S330,所述路由节点与所述搜索节点根据所述增量离线字典的信息对预先加载的字典进行更新;
所述路由节点与所述搜索节点对预先加载的字典进行增量更新,并将所述增量离线字典的版本号以及当前全量离线字典的版本号做为新的版本号。
步骤S340,所述路由节点与所述搜索节点完成对所述增量离线字典的加载后,将所述增量离线字典的加载列表通过心跳信息发送给所述管理节点;
步骤S350,所述管理节点检查所有的路由节点和搜索节点是否均完成了更新,如果是,则向所述路由节点发送启用新字典的通知。
增量更新与第三实施例所描述的全量更新不同的是,更新完字典后不释放旧的字典,而是将所述增量离线字典的版本号以及当前全量离线字典的版本号做为新的版本号通过心跳信息发送给管理节点,管理节点将新的版本号再发送给路由节点,路由节点会使用最新的版本号作为压缩字典的版本。
与全量更新相同的是,所述路由节点和搜索节点在每隔一个预定周期向所述管理节点发送一次心跳信息,所述心跳信息中包括当前所加载的字典的版本信息。
第四实施例
图5示出了本发明第四实施例提供的一种搜索请求处理***的结构框图,请参阅图5,本实施例中的***40包括:路由节点41以及搜索节点42,所述路由节点与所述搜索节点均预先加载有用于压缩和解压缩的字典,其中,
所述路由节点41用于接收客户端发送的搜索请求,所述搜索请求中包括用户通过所述客户端输入的请求串,利用字典压缩算法,使用预先加载的字典将所述请求串压缩为压缩编码,将所述压缩编码与所述字典的版本号发送给所述搜索节点42;
所述搜索节点42用于使用与所述版本号对应的字典,对所述压缩编码进行解压缩。
所述***还包括构建节点43和管理节点44,所述构建节点43用于对离线请求串进行训练,构建离线字典,通过管理节点44将所述离线字典的信息发送到所述路由节点41和所述搜索节点42;
所述路由节点41与所述搜索节点42还用于根据所述离线字典的信息对预先加载的字典进行更新。
所述构建节点43具体用于根据所述离线请求串建立字典树,将建立好的字典树进行合并,将合并后的字典树进行霍夫曼编码,得到所述离线字典。
进一步的,所述管理节点44具体还用于:
判断所述离线请求串的类型;
针对不同类型的请求串分别建立字典树;
统计出字典树中每个叶子节点的数目,将数目低于预定值的叶子节点删除。
进一步的,所述管理节点44还用于,当接收到由构建节点43发送的更新字典的指令时,将所述离线字典的信息分别发送到所述路由节点41和所述搜索节点42,所述离线字典的信息包括所述离线字典的大小、版本信息以及文件位置;
所述路由节点41与所述搜索节点42还用于根据所述离线字典的信息加载所述离线字典;
所述管理节点44还用于检查所有的路由节点和搜索节点是否均完成了更新,如果是,则向所述路由节点41发送启用新字典的通知。
进一步的,所述路由节点41与所述搜索节点42还用于完成对所述离线字典的加载后,将所述离线字典的加载列表通过心跳信息发送给所述管理节点44;
所述管理节点44还用于当接收到所有路由节点41和搜索节点42发送的加载列表时,判定所有的路由节点41和搜索节点42均完成了更新。
进一步的,所述路由节点41和搜索节点42还用于在每隔一个预定周期向所述管理节点44发送一次心跳信息,所述心跳信息中包括当前所加载的字典的版本信息。
进一步的,所述管理节点44还用于判断所述离线请求串中不属于预定类型的请求串的数量是否超过预定数量,如果是,则对所述离线请求串单独进行训练,构建增量离线字典,否则,构建全量离线字典。
进一步的,如果所述管理节点44构建的是全量离线字典,所述路由节点41与所述搜索节点42还用于根据所述离线字典的信息对预先加载的字典进行全量更新;所述管理节点44还用于向所述路由节点发送启用新字典的通知后,向所述路由节点41和所述搜索节点42发送释放命令;
所述路由节点41与所述搜索节点42还用于释放与所述释放命令中的版本号对应的字典,完成全量更新。
进一步的,如果所述管理节点44构建的是增量离线字典,所述管理节点44发送给所述路由节点41与所述搜索节点42的离线字典的信息中,包括所述增量离线字典的版本号以及当前全量离线字典的版本号,所述路由节点41与所述搜索节点42还用于对预先加载的字典进行增量更新,并将所述增量离线字典的版本号以及当前全量离线字典的版本号做为新的版本号。
综上所述,本实施例提供的搜索请求处理方法及***,路由节点接收到客户端发送的包含请求串的搜索请求后,利用字典压缩算法,使用预先加载的字典将请求串压缩为压缩编码,压缩比大幅高于传统的直接压缩,由于搜索节点中也加载有与路由节点中启用的字典具有相同版本号的字典,因此搜索节点可以根据预先加载的字典对压缩编码进行快速解压缩,得到对应的请求串,可以保证压缩的结果尽量小,同时实现了对query进行快速压缩和解压缩。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本发明实施例所提供的搜索请求处理***及***,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
另外,附图中的流程图和框图显示了根据本发明的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
本发明实施例所提供的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
Claims (20)
1.一种搜索请求处理方法,应用于搜索请求处理***中,其特征在于,所述***包括路由节点以及搜索节点,所述路由节点与所述搜索节点均预先加载有用于压缩和解压缩的字典,所述方法包括:
所述路由节点接收客户端发送的搜索请求,所述搜索请求中包括用户通过所述客户端输入的请求串;
所述路由节点利用字典压缩算法,使用预先加载的字典将所述请求串压缩为压缩编码;
所述路由节点将所述压缩编码与所述字典的版本号发送给所述搜索节点;
所述搜索节点使用与所述版本号对应的字典,对所述压缩编码进行解压缩。
2.如权利要求1所述的方法,其特征在于,所述***还包括构建节点和管理节点,所述方法还包括:
所述构建节点对离线请求串进行训练,构建离线字典;
所述构建节点通过所述管理节点将所述离线字典的信息发送到所述路由节点和所述搜索节点;
所述路由节点与所述搜索节点根据所述离线字典的信息对预先加载的字典进行更新。
3.如权利要求2所述的方法,其特征在于,所述构建节点对离线请求串进行训练,构建离线字典,包括:
根据所述离线请求串建立字典树;
将建立好的字典树进行合并,将合并后的字典树进行霍夫曼编码,得到所述离线字典。
4.如权利要求3所述的方法,其特征在于,所述根据所述离线请求串建立字典树,包括:
判断所述离线请求串的类型;
针对不同类型的请求串分别建立字典树;
统计出字典树中每个叶子节点的数目,将数目低于预定值的叶子节点删除。
5.如权利要求2所述的方法,其特征在于,所述管理节点将所述离线字典的信息发送到所述路由节点和所述搜索节点,所述路由节点与所述搜索节点根据所述离线字典的信息对预先加载的字典进行更新,包括:
当所述管理节点接收到由所述构建节点发送的更新字典的指令时,将所述离线字典的信息分别发送到所述路由节点和所述搜索节点,所述离线字典的信息包括所述离线字典的大小、版本信息以及文件位置;
所述路由节点与所述搜索节点根据所述离线字典的信息加载所述离线字典;
所述管理节点检查所有的路由节点和搜索节点是否均完成了更新,如果是,则向所述路由节点发送启用新字典的通知。
6.如权利要求5所述的方法,其特征在于,所述方法还包括:
所述路由节点与所述搜索节点完成对所述离线字典的加载后,将所述离线字典的加载列表通过心跳信息发送给所述管理节点;
所述管理节点检查所有的路由节点和搜索节点是否均完成了更新,包括:
当所述管理节点接收到所有路由节点和搜索节点发送的加载列表时,判定所有的路由节点和搜索节点均完成了更新。
7.如权利要求2所述的方法,其特征在于,所述方法还包括:
所述路由节点和搜索节点在每隔一个预定周期向所述管理节点发送一次心跳信息,所述心跳信息中包括当前所加载的字典的版本信息。
8.如权利要求5所述的方法,其特征在于,所述管理节点对离线请求串进行训练,构建离线字典,包括:
判断所述离线请求串中不属于预定类型的请求串的数量是否超过预定数量,如果是,则对所述离线请求串单独进行训练,构建增量离线字典,否则,构建全量离线字典。
9.如权利要求8所述的方法,其特征在于,如果所述管理节点构建的是全量离线字典,所述路由节点与所述搜索节点根据所述离线字典的信息对预先加载的字典进行全量更新,所述向所述路由节点发送启用新字典的通知后,还包括:
所述管理节点向所述路由节点和所述搜索节点发送释放命令;
所述路由节点与所述搜索节点释放与所述释放命令中的版本号对应的字典。
10.如权利要求8所述的方法,其特征在于,如果所述管理节点构建的是增量离线字典,所述管理节点发送给所述路由节点与所述搜索节点的离线字典的信息中,包括所述增量离线字典的版本号以及当前全量离线字典的版本号,所述路由节点与所述搜索节点对预先加载的字典进行增量更新,并将所述增量离线字典的版本号以及当前全量离线字典的版本号做为新的版本号。
11.一种搜索请求处理***,其特征在于,所述***包括路由节点以及搜索节点,所述路由节点与所述搜索节点均预先加载有用于压缩和解压缩的字典,其中,
所述路由节点用于接收客户端发送的搜索请求,所述搜索请求中包括用户通过所述客户端输入的请求串,利用字典压缩算法,使用预先加载的字典将所述请求串压缩为压缩编码,将所述压缩编码与所述字典的版本号发送给所述搜索节点;
所述搜索节点用于使用与所述版本号对应的字典,对所述压缩编码进行解压缩。
12.如权利要求11所述的***,其特征在于,所述***还包括构建节点和管理节点,所述构建节点用于对离线请求串进行训练,构建离线字典,通过所述管理节点将所述离线字典的信息发送到所述路由节点和所述搜索节点;
所述路由节点与所述搜索节点还用于根据所述离线字典的信息对预先加载的字典进行更新。
13.如权利要求12所述的***,其特征在于,
所述构建节点具体用于根据所述离线请求串建立字典树,
将建立好的字典树进行合并,将合并后的字典树进行霍夫曼编码,得到所述离线字典。
14.如权利要求13所述的***,其特征在于,所述管理节点具体还用于:
判断所述离线请求串的类型;
针对不同类型的请求串分别建立字典树;
统计出字典树中每个叶子节点的数目,将数目低于预定值的叶子节点删除。
15.如权利要求12所述的***,其特征在于,
所述管理节点还用于,当接收到由所述构建节点发送的更新字典的指令时,将所述离线字典的信息分别发送到所述路由节点和所述搜索节点,所述离线字典的信息包括所述离线字典的大小、版本信息以及文件位置;
所述路由节点与所述搜索节点还用于根据所述离线字典的信息加载所述离线字典;
所述管理节点还用于检查所有的路由节点和搜索节点是否均完成了更新,如果是,则向所述路由节点发送启用新字典的通知。
16.如权利要求15所述的***,其特征在于,所述路由节点与所述搜索节点还用于完成对所述离线字典的加载后,将所述离线字典的加载列表通过心跳信息发送给所述管理节点;
所述管理节点还用于当接收到所有路由节点和搜索节点发送的加载列表时,判定所有的路由节点和搜索节点均完成了更新。
17.如权利要求12所述的***,其特征在于,所述路由节点和搜索节点还用于在每隔一个预定周期向所述管理节点发送一次心跳信息,所述心跳信息中包括当前所加载的字典的版本信息。
18.如权利要求15所述的***,其特征在于,所述管理节点还用于判断所述离线请求串中不属于预定类型的请求串的数量是否超过预定数量,如果是,则对所述离线请求串单独进行训练,构建增量离线字典,否则,构建全量离线字典。
19.如权利要求18所述的***,其特征在于,如果所述管理节点构建的是全量离线字典,所述路由节点与所述搜索节点还用于根据所述离线字典的信息对预先加载的字典进行全量更新;所述管理节点还用于向所述路由节点发送启用新字典的通知后,向所述路由节点和所述搜索节点发送释放命令;
所述路由节点与所述搜索节点还用于释放与所述释放命令中的版本号对应的字典,完成全量更新。
20.如权利要求18所述的***,其特征在于,如果所述管理节点构建的是增量离线字典,所述管理节点发送给所述路由节点与所述搜索节点的离线字典的信息中,包括所述增量离线字典的版本号以及当前全量离线字典的版本号,所述路由节点与所述搜索节点还用于对预先加载的字典进行增量更新,并将所述增量离线字典的版本号以及当前全量离线字典的版本号做为新的版本号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510944546.7A CN105630870B (zh) | 2015-12-16 | 2015-12-16 | 搜索请求处理方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510944546.7A CN105630870B (zh) | 2015-12-16 | 2015-12-16 | 搜索请求处理方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105630870A true CN105630870A (zh) | 2016-06-01 |
CN105630870B CN105630870B (zh) | 2017-06-30 |
Family
ID=56045803
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510944546.7A Active CN105630870B (zh) | 2015-12-16 | 2015-12-16 | 搜索请求处理方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105630870B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110263910A (zh) * | 2018-03-12 | 2019-09-20 | 罗伯特·博世有限公司 | 用于存储高效地运行神经网络的方法和设备 |
CN111736913A (zh) * | 2019-03-25 | 2020-10-02 | 华为技术有限公司 | 类加载方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103347047A (zh) * | 2013-06-07 | 2013-10-09 | 吴昊 | 一种基于网络字典的无损数据压缩方法 |
CN104216958A (zh) * | 2014-08-20 | 2014-12-17 | 深圳市邦彦信息技术有限公司 | 基于结构化数据的传输方法及装置 |
CN104504015A (zh) * | 2014-12-11 | 2015-04-08 | 中国科学院遥感与数字地球研究所 | 一种基于动态增量式字典更新的学习算法 |
CN104639645A (zh) * | 2015-02-12 | 2015-05-20 | 广州神马移动信息科技有限公司 | 网络负载均衡方法、装置及集群服务*** |
CN104765769A (zh) * | 2015-03-06 | 2015-07-08 | 大连理工大学 | 一种基于词矢量的短文本查询扩展及检索方法 |
CN104917786A (zh) * | 2014-03-11 | 2015-09-16 | 杭州雾隐美地传媒有限公司 | 一种节省客户端和服务器交互时的传输流量的方法和模块 |
-
2015
- 2015-12-16 CN CN201510944546.7A patent/CN105630870B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103347047A (zh) * | 2013-06-07 | 2013-10-09 | 吴昊 | 一种基于网络字典的无损数据压缩方法 |
CN104917786A (zh) * | 2014-03-11 | 2015-09-16 | 杭州雾隐美地传媒有限公司 | 一种节省客户端和服务器交互时的传输流量的方法和模块 |
CN104216958A (zh) * | 2014-08-20 | 2014-12-17 | 深圳市邦彦信息技术有限公司 | 基于结构化数据的传输方法及装置 |
CN104504015A (zh) * | 2014-12-11 | 2015-04-08 | 中国科学院遥感与数字地球研究所 | 一种基于动态增量式字典更新的学习算法 |
CN104639645A (zh) * | 2015-02-12 | 2015-05-20 | 广州神马移动信息科技有限公司 | 网络负载均衡方法、装置及集群服务*** |
CN104765769A (zh) * | 2015-03-06 | 2015-07-08 | 大连理工大学 | 一种基于词矢量的短文本查询扩展及检索方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110263910A (zh) * | 2018-03-12 | 2019-09-20 | 罗伯特·博世有限公司 | 用于存储高效地运行神经网络的方法和设备 |
CN111736913A (zh) * | 2019-03-25 | 2020-10-02 | 华为技术有限公司 | 类加载方法和装置 |
CN111736913B (zh) * | 2019-03-25 | 2021-11-19 | 华为技术有限公司 | 类加载方法和装置 |
US11755341B2 (en) | 2019-03-25 | 2023-09-12 | Huawei Technologies Co., Ltd. | Class loading method and apparatus |
Also Published As
Publication number | Publication date |
---|---|
CN105630870B (zh) | 2017-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105893337B (zh) | 用于文本压缩和解压缩的方法和设备 | |
US9223765B1 (en) | Encoding and decoding data using context model grouping | |
US10187081B1 (en) | Dictionary preload for data compression | |
US8452093B2 (en) | Efficient histogram storage | |
KR20130062889A (ko) | 데이터 압축 방법 및 시스템 | |
CN111523001B (zh) | 用于存储数据的方法、装置、设备以及存储介质 | |
US20210144226A1 (en) | Partial downloads of compressed data | |
US11070231B2 (en) | Reducing storage of blockchain metadata via dictionary-style compression | |
JP5873925B2 (ja) | 圧縮一致列挙 | |
US11609882B2 (en) | System and method for random-access manipulation of compacted data files | |
CN106897280A (zh) | 数据查询方法及装置 | |
CN105630870A (zh) | 搜索请求处理方法及*** | |
US20050102304A1 (en) | Data compressor, data decompressor, and data management system | |
CN103647843A (zh) | 触发和响应云输入请求的方法和设备 | |
CN110598057B (zh) | 一种面向遥测数据的数据搜索方法及装置 | |
Antoniou et al. | Compressing biological sequences using self adjusting data structures | |
GB2510198A (en) | Method and device for encoding a header in a message using an indexing table | |
Hoang et al. | Dictionary selection using partial matching | |
CN110807092A (zh) | 数据处理方法及装置 | |
CN112035497B (zh) | 用于清理已提交的事务信息的方法和装置 | |
CN115982206B (zh) | 一种处理数据的方法和装置 | |
US20240220456A1 (en) | Efficient database query evaluation | |
US20240202163A1 (en) | System and method for random-access manipulation of compacted data files | |
Gupta et al. | An efficient compressor for biological sequences | |
Klein et al. | Parallel Lempel Ziv Coding |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20200526 Address after: 310051 room 508, floor 5, building 4, No. 699, Wangshang Road, Changhe street, Binjiang District, Hangzhou City, Zhejiang Province Patentee after: Alibaba (China) Co.,Ltd. Address before: 510627 Guangdong city of Guangzhou province Whampoa Tianhe District Road No. 163 Xiping Yun Lu Yun Ping square B radio tower 12 layer self unit 01 Patentee before: GUANGZHOU SHENMA MOBILE INFORMATION TECHNOLOGY Co.,Ltd. |