CN111198961B - 商品搜索方法、装置及服务器 - Google Patents
商品搜索方法、装置及服务器 Download PDFInfo
- Publication number
- CN111198961B CN111198961B CN201811369109.7A CN201811369109A CN111198961B CN 111198961 B CN111198961 B CN 111198961B CN 201811369109 A CN201811369109 A CN 201811369109A CN 111198961 B CN111198961 B CN 111198961B
- Authority
- CN
- China
- Prior art keywords
- commodity
- index
- updated
- target
- identification
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 100
- 239000012634 fragment Substances 0.000 claims abstract description 82
- 230000002441 reversible effect Effects 0.000 claims abstract description 31
- 238000012986 modification Methods 0.000 claims description 15
- 230000004048 modification Effects 0.000 claims description 15
- 238000011156 evaluation Methods 0.000 claims description 7
- 230000003111 delayed effect Effects 0.000 claims description 6
- 238000010276 construction Methods 0.000 claims description 5
- 238000012163 sequencing technique Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 22
- 238000012545 processing Methods 0.000 description 6
- 238000000605 extraction Methods 0.000 description 5
- 239000000284 extract Substances 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000000737 periodic effect Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 238000003064 k means clustering Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 230000003442 weekly effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
- G06Q30/0601—Electronic shopping [e-shopping]
- G06Q30/0641—Shopping interfaces
- G06Q30/0643—Graphical representation of items or shoppers
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种商品搜索方法、装置及服务器,该方法获取待搜索商品图片,并提取所述待搜索商品图片的特征,根据所述待搜索商品图片的特征和M个索引分片中各自存储的倒排索引和正排索引,分别获取每个索引分片对应的K个目标商品的标识和各所述目标商品的当前属性,根据各所述目标商品的标识和当前属性,对各所述目标商品进行排序,将排序后的各目标商品作为商品搜索结果;通过采用正排索引和倒排索引相结合的搜索方式,提高了商品搜索的效率,保证了商品搜索结构的实时性;另外,通过采用多个索引分片并行搜索的方式,进一步提高了商品搜索的效率。
Description
技术领域
本发明实施例涉及互联网技术领域,尤其涉及一种商品搜索方法、装置及服务器。
背景技术
视觉搜索,也称为基于图片内容的搜索,随着图像识别领域的飞速发展,视觉搜索目前已成为活跃且迅速发展的技术领域。不管是在线购物场景,还是线下实体零售场景,基于图片内容的商品搜索均能够极大地提升用户的体验和参与感。
以电商平台的商品搜索为例,用户输入一个商品的图片后,电商平台的搜索引擎会向用户展示与该商品图片具有相似性的多个商品的列表,以供用户进行选择和对比。
然而,由于商品动态更新变化频繁,现有的商品搜索方法,其搜索结果不具有实时性,即商品搜索结果并不能反映最新的商品状态。
发明内容
本发明实施例提供一种商品搜索方法、装置及服务器,用以提高商品搜索结果的实时性。
第一方面,本发明实施例提供一种商品搜索方法,包括:
获取待搜索商品图片,并提取所述待搜索商品图片的特征;
根据所述待搜索商品图片的特征和M个索引分片中各自存储的倒排索引和正排索引,分别获取每个索引分片对应的K个目标商品的标识和各所述目标商品的当前属性,所述倒排索引用于指示各商品的标识和特征,所述正排索引用于指示各商品的标识和当前属性,M和K均为正整数;
根据各所述目标商品的标识和当前属性,对各所述目标商品进行排序,将排序后的各目标商品作为商品搜索结果。
可选的,所述倒排索引包括至少一个聚类,每个聚类对应有至少一个商品的标识和特征;
所述根据所述待搜索商品图片的特征和M个索引分片中各自存储的倒排索引和正排索引,分别获取每个索引分片对应的K个目标商品的标识和各所述目标商品的当前属性,包括:
针对每个索引分片,获取所述待搜索商品图片的特征和所述倒排索引中的各聚类的聚类中心之间的距离,将距离最短的聚类对应的各商品作为候选商品;
根据各所述候选商品的特征和所述待搜索商品图片的特征之间的相似性,获取K个目标商品的标识;
根据各所述目标商品的标识和所述正排索引,获取各所述目标商品的当前属性。
可选的,各索引分片还用于存储商品的状态位图,所述状态位图用于指示各商品的当前状态为上架或者下架;
所述根据各所述候选商品的特征和所述待搜索商品图片的特征之间的相似性,获取K个目标商品的标识,包括:
根据所述状态位图,确定各候选商品的当前状态;
针对当前状态为上架的各候选商品,获取所述候选商品的特征和所述待搜索商品图片的特征之间的相似性,将相似性满足预设条件的K个候选商品的标识作为所述K个目标商品的标识。
可选的,所述方法还包括:
接收商品更新消息,所述商品更新消息包括更新商品的标识,所述商品更新消息用于指示下述中一种:商品上架、商品下架、商品属性修改;
根据所述更新商品的标识,确定所述更新商品对应的索引分片;
根据所述商品更新消息,对所述索引分片对应的正排索引、倒排索引和/或状态位图进行更新。
可选的,所述根据所述商品更新消息,对所述索引分片对应的正排索引、倒排索引和/或状态位图进行更新,包括:
若所述商品更新消息用于指示商品上架,则:
根据所述更新商品的标识,判断所述更新商品是否上架过;
若是,则将所述状态位图中的所述更新商品的当前状态设置为上架;
若否,则提取所述更新商品的特征,根据所述更新商品的特征与所述倒排索引中的各聚类中心的距离,确定所述更新商品所属的目标聚类,将所述更新商品的标识和特征添加至所述目标聚类对应的商品列表中,并将所述更新商品的标识和属性添加至所述正排索引中,将所述状态位图中的所述更新商品的当前状态设置为上架。
可选的,所述根据所述商品更新消息,对所述索引分片对应的正排索引和/或倒排索引进行更新,包括:
若所述商品更新消息用于指示商品属性修改,则根据所述商品更新消息,对所述正排索引中的所述更新商品的当前属性进行更新;
若所述商品更新消息用于指示商品下架,则根据所述更新商品的标识,将所述状态位图中的所述更新商品的当前状态设置为下架。
可选的,所述方法还包括:
获取预设时间段内的商品更新消息日志;
针对所述日志中每一条用于指示商品上架的商品变更消息,根据所述商品变更消息中的更新商品的标识,确定特征库中是否存在所述更新商品的特征;
若否,则提取所述更新商品的特征,并将所述更新商品的标识和所述更新商品的特征存储至所述特征库中。
可选的,所述方法还包括:
按照预设的周期,根据所述特征库中存储的各商品的标识,获取各商品的属性信息和状态信息;根据各商品的特征、属性信息和状态信息,构建所述各所述索引分片对应的正排索引、倒排索引和状态位图。
可选的,所述将所述更新商品的标识和特征添加至所述目标聚类对应的商品列表中之后,还包括:
将所述更新商品在所述目标聚类中的位置,作为所述目标聚类的最后一个商品的位置;
相应的,所述将距离最短的聚类对应的各商品作为候选商品,包括:
将所述距离最短的聚类中的所述最后一个商品的位置之前的各商品作为候选商品。
可选的,所述将所述更新商品的标识和特征添加至所述目标聚类对应的商品列表中,包括:
判断所述目标聚类对应的商品列表已占用内存是否达到预分配内存的预设比例;
若是,则创建新的内存区域用于存放所述目标聚类对应的商品列表,所述新的内存区域大于所述预分配内存,将所述目标聚类对应的商品列表拷贝到所述新的内存区域中,并将所述更新商品的标识和特征添加至所述新的内存区域中,延迟释放旧的内存区域;
若否,将所述更新商品的标识和特征添加至所述目标聚类对应的商品列表中。
可选的,所述根据所述待搜索商品图片的特征和M个索引分片中各自存储的倒排索引和正排索引,分别获取每个索引分片对应的K个目标商品的标识和各所述目标商品的当前属性,包括:
将所述待搜索商品图片的特征分别发送给N个中间转发层,以使每个所述中间转发层将所述待搜索商品图片的特征分别转发给至少一个检索服务层,以使每个所述检索服务层根据所述待搜索商品图片的特征和对应的索引分片中存储的倒排索引和正排索引,获取所述索引分片对应的K个目标商品的标识和各所述目标商品的当前属性;其中,每个所述中间转发层对应的检索服务层不同,各检索服务层与各索引分片一一对应。
可选的,所述当前属性包括如下中的至少一种属性:商品价格、商品销量、商品评价、商品图片的统一资源定位符。
第二方面,本发明实施例提供一种商品搜索装置,包括:
获取模块,用于获取待搜索商品图片,并提取所述待搜索商品图片的特征;
搜索模块,用于根据所述待搜索商品图片的特征和M个索引分片中各自存储的倒排索引和正排索引,分别获取每个索引分片对应的K个目标商品的标识和各所述目标商品的当前属性,所述倒排索引用于指示各商品的标识和特征,所述正排索引用于指示各商品的标识和当前属性,M和K均为正整数;
排序模块,用于根据各所述目标商品的标识和当前属性,对各所述目标商品进行排序,将排序后的各目标商品作为商品搜索结果。
可选的,所述倒排索引包括至少一个聚类,每个聚类对应有至少一个商品的标识和特征;
所述搜索模块具体用于:
针对每个索引分片,获取所述待搜索商品图片的特征和所述倒排索引中的各聚类的聚类中心之间的距离,将距离最短的聚类对应的各商品作为候选商品;
根据各所述候选商品的特征和所述待搜索商品图片的特征之间的相似性,获取K个目标商品的标识;
根据各所述目标商品的标识和所述正排索引,获取各所述目标商品的当前属性。
可选的,各索引分片还用于存储商品的状态位图,所述状态位图用于指示各商品的当前状态为上架或者下架;
所述搜索模块具体用于:
根据所述状态位图,确定各候选商品的当前状态;
针对当前状态为上架的各候选商品,获取所述候选商品的特征和所述待搜索商品图片的特征之间的相似性,将相似性满足预设条件的K个候选商品的标识作为所述K个目标商品的标识。
可选的,所述装置还包括:索引增量更新模块,用于:
接收商品更新消息,所述商品更新消息包括更新商品的标识,所述商品更新消息用于指示下述中一种:商品上架、商品下架、商品属性修改;
根据所述更新商品的标识,确定所述更新商品对应的索引分片;
根据所述商品更新消息,对所述索引分片对应的正排索引、倒排索引和/或状态位图进行更新。
可选的,所述索引增量更新模块具体用于:
若所述商品更新消息用于指示商品上架,则:
根据所述更新商品的标识,判断所述更新商品是否上架过;
若是,则将所述状态位图中的所述更新商品的当前状态设置为上架;
若否,则提取所述更新商品的特征,根据所述更新商品的特征与所述倒排索引中的各聚类中心的距离,确定所述更新商品所属的目标聚类,将所述更新商品的标识和特征添加至所述目标聚类对应的商品列表中,并将所述更新商品的标识和属性添加至所述正排索引中,将所述状态位图中的所述更新商品的当前状态设置为上架。
可选的,所述索引增量更新模块具体用于:
若所述商品更新消息用于指示商品属性修改,则根据所述商品更新消息,对所述正排索引中的所述更新商品的当前属性进行更新;
若所述商品更新消息用于指示商品下架,则根据所述更新商品的标识,将所述状态位图中的所述更新商品的当前状态设置为下架。
可选的,所述装置还包括:索引全量构建模块,用于:
获取预设时间段内的商品更新消息日志;
针对所述日志中每一条用于指示商品上架的商品变更消息,根据所述商品变更消息中的更新商品的标识,确定特征库中是否存在所述更新商品的特征;
若否,则提取所述更新商品的特征,并将所述更新商品的标识和所述更新商品的特征存储至所述特征库中。
可选的,所述索引全量构建模块还用于:
按照预设的周期,根据所述特征库中存储的各商品的标识,获取各商品的属性信息和状态信息;根据各商品的特征、属性信息和状态信息,构建所述各所述索引分片对应的正排索引、倒排索引和状态位图。
可选的,所述索引增量更新模块还用于将所述更新商品在所述目标聚类中的位置,作为所述目标聚类的最后一个商品的位置;
相应的,所述搜索模块具体用于将所述距离最短的聚类中的所述最后一个商品的位置之前的各商品作为候选商品。
可选的,所述索引增量更新模块具体用于:
判断所述目标聚类对应的商品列表已占用内存是否达到预分配内存的预设比例;
若是,则创建新的内存区域用于存放所述目标聚类对应的商品列表,所述新的内存区域大于所述预分配内存,将所述目标聚类对应的商品列表拷贝到所述新的内存区域中,并将所述更新商品的标识和特征添加至所述新的内存区域中,延迟释放旧的内存区域;
若否,将所述更新商品的标识和特征添加至所述目标聚类对应的商品列表中。
可选的,所述搜索模块具体用于:将所述待搜索商品图片的特征分别发送给N个中间转发层,以使每个所述中间转发层将所述待搜索商品图片的特征分别转发给至少一个检索服务层,以使每个所述检索服务层根据所述待搜索商品图片的特征和对应的索引分片中存储的倒排索引和正排索引,获取所述索引分片对应的K个目标商品的标识和各所述目标商品的当前属性;其中,每个所述中间转发层对应的检索服务层不同,各检索服务层与各索引分片一一对应。
可选的,所述当前属性包括如下中的至少一种属性:商品价格、商品销量、商品评价、商品图片的统一资源定位符。
第三方面,本发明实施例提供一种服务器,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如第一方面任一项所述的方法。
第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如第一方面任一项所述的方法。
本发明实施例提供的商品搜索方法、装置及服务器,该方法获取待搜索商品图片,并提取所述待搜索商品图片的特征,根据所述待搜索商品图片的特征和M个索引分片中各自存储的倒排索引和正排索引,分别获取每个索引分片对应的K个目标商品的标识和各所述目标商品的当前属性,根据各所述目标商品的标识和当前属性,对各所述目标商品进行排序,将排序后的各目标商品作为商品搜索结果;通过采用正排索引和倒排索引相结合的搜索方式,提高了商品搜索的效率,保证了商品搜索结构的实时性;另外,通过采用多个索引分片并行搜索的方式,进一步提高了商品搜索的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例可能适用的一种应用场景的示意图;
图2为本发明实施例提供的商品搜索方法的流程示意图一;
图3为本发明实施例提供的商品搜索方法的流程示意图二;
图4为本发明实施例提供的服务器的搜索框架的结构示意图;
图5为本发明实施例提供的正排索引的存储结构示意图;
图6为本发明实施例提供的倒排索引的存储结构示意图;
图7为本发明实施例提供的商品搜索方法的流程示意图三;
图8为本发明实施例提供的实时增量更新索引的流程示意图;
图9为本发明实施例提供的根据商品更新消息实时对索引分片进行增量更新的流程示意图;
图10为本发明实施例提供的正排索引的更新过程示意图;
图11为本发明实施例提供的倒排索引的更新过程示意图;
图12为本发明实施例提供的特征库的更新过程示意图;
图13为本发明实施例提供的倒排索引的内存管理过程示意图;
图14为本发明实施例提供的商品搜索装置的结构示意图一;
图15为本发明实施例提供的商品搜索装置的结构示意图二;
图16为本发明实施例提供的服务器的硬件结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明实施例适用于互联网领域中的商品搜索场景,具体的,根据用户输入的待搜索商品图片进行搜索,获取与待搜索商品图片具有相似性的多个商品的列表。下面结合图1对本发明实施例的可能的应用场景进行介绍。图1为本发明实施例可能适用的一种应用场景的示意图。如图1所示,本发明实施例提供的商品搜索系统包括终端和服务器。
其中,终端是供用户输入信息以及显示输出结果的任意电子设备,包括但不限于:计算机、智能手机、笔记本电脑、平台电脑、智能穿戴设备等。服务器是用于执行商品搜索的电子设备。一种可能的应用场景中,用户通过终端上传待搜索商品图片,终端将待搜索商品图片发送给服务器执行搜索过程,并将商品搜索结果返回给终端向用户展示,以供用户进行商品选择或者商品对比。
需要说明的是,本发明实施例提供的商品搜索方法可适用于需要进行商品搜索的任意场景,包括但不限于:电商平台的商品搜索、实体商店的商品搜索等,当然,还可以适用于图片检索的场景。以电商平台的商品搜索为例,终端侧安装电商平台的客户端,服务器为电商平台的服务器,用户通过电商平台客户端输入待搜索商品,并通过客户端查看服务器返回的商品搜索结果,进行商品浏览、选择、对比、购买等。
本发明实施例通过对商品建立正排索引和倒排索引,提高了商品搜索的效率,保证了商品搜索的实时性;还通过定期全量索引和实时增量索引,保证了商品索引数据的完整性和实时性,提高了商品搜索结果的实时性;还通过设置商品状态位图,减少了同一商品的特征提取频次,进一步提高了商品搜索结果的实时性和准确性。
下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图2为本发明实施例提供的商品搜索方法的流程示意图一,本发明实施例的方法可以由图1中的服务器执行。如图2所示,本实施例的方法,包括:
S201:获取待搜索商品图片,并提取所述待搜索商品图片的特征。
具体的,服务器接收到用户通过客户端上传的待搜索商品图片后,提取待搜索商品图片的特征,其中,待搜索商品图片的特征可以为高维卷积神经网络特征,当然,还可以提取其他能够表征该图片内容的特征,本发明实施例对此不作具体限定。
S202:根据所述待搜索商品图片的特征和M个索引分片中各自存储的倒排索引和正排索引,分别获取每个索引分片对应的K个目标商品的标识和各所述目标商品的当前属性,所述倒排索引用于指示各商品的标识和特征,所述正排索引用于指示各商品的标识和当前属性,M和K均为正整数。
具体的,以电商平台的商品搜索过程为例,本发明实施例需要事先获取电商平台的所有商品的属性和特征等信息,并根据上述信息为各商品建立正排索引和倒排索引。其中,正排索引用于指示各商品的标识和当前属性,倒排索引用于指示各商品的标识和特征。
其中,本实施例中的倒排索引,也可以称为反向索引、后向索引;本实施例中的正排索引,也可以称为正向索引、前向索引。
可以理解的,由于电商平台的商品数量巨大,为了支持数亿商品的在线搜索,本发明实施例中将商品索引进行分片存储,具体的,可以划分为M个索引分片,每个索引分片中存储部分商品的正排索引和倒排索引。在进行商品搜索的过程中,可以并行对M个索引分片进行搜索,以提升搜索效率。
具体搜索过程中,针对每一个索引分片,可以将待搜索商品图片的特征与倒排索引中存储的各商品的特征进行相似度计算,获取相似度最高的K个商品的标识作为目标商品的标识,进一步的,再根据各目标商品的标识和正排索引,获取到各目标商品的当前属性。
需要说明的是,M和K均为正整数,本发明实施例对于M和K的取值不作具体限定,可以根据实际应用场景进行合理设置。
S203:根据各所述目标商品的标识和当前属性,对各所述目标商品进行排序,将排序后的各目标商品作为商品搜索结果。
可以理解的,经过对M个索引分片进行搜索,在每个索引分片中获取到K个目标商品,则共获取到M*K个目标商品。本实施例中,根据各目标商品的标识和当前属性,对这些目标商品进行调权排序,得到最终的商品搜索结果。
可选的,正排索引中存储的各商品的当前属性包括下述中的至少一种:商品价格、商品销量、商品评价、商品图片的统一资源定位符。在对各目标商品进行排序时,可以综合考虑各目标商品的价格、销量、评价等信息,使得排序后的搜索结果更加符合用户的需求。
可以理解的,正排索引和倒排索引均可以采用多种存储结构实现,本发明实施例对于二者的存储结构并不做具体限定,一种可选的实施方式可参见后续实施例的详细描述。
本发明实施例中基于图片特征进行商品搜索时,采用正排索引和倒排索引相结合的方式,即,先根据倒排索引找到与待搜索商品图片的特征相似的多个目标商品,然后再根据正排索引获取各目标商品的当前属性,并根据当前属性对目标商品进行排序,得到商品搜索结果;通过上述过程,能够提高商品搜索的效率,提高商品搜索结果的实时性。
本发明实施例提供的商品搜索方法,获取待搜索商品图片,并提取所述待搜索商品图片的特征,根据所述待搜索商品图片的特征和M个索引分片中各自存储的倒排索引和正排索引,分别获取每个索引分片对应的K个目标商品的标识和各所述目标商品的当前属性,根据各所述目标商品的标识和当前属性,对各所述目标商品进行排序,将排序后的各目标商品作为商品搜索结果;通过采用正排索引和倒排索引相结合的搜索方式,提高了商品搜索的效率,保证了商品搜索结构的实时性;另外,通过采用多个索引分片并行搜索的方式,进一步提高了商品搜索的效率。
图3为本发明实施例提供的商品搜索方法的流程示意图二,图4为本发明实施例提供的服务器的搜索框架的结构示意图。本发明实施例将结合图4所示的框架,详细描述商品搜索的过程。
如图4所示,本实施例提供的搜索架构分为三个重要模块,分别为:混合服务层、中间转发层、检索服务层。其中,混合服务层与N个中间转发层分别连接,每个中间转发层连接至少一个检索服务层,并且,每个中间转发层连接的检索服务层不同。另外,各检索服务层与各索引分片一一对应,各检索服务层用于针对对应的索引分片进行商品搜索。
下面结合图4详细描述商品搜索过程,如图3所示,本实施例的方法,包括:
S301:混合服务层获取待搜索商品图片,并提取所述待搜索商品图片的特征。
S302:混合服务层将所述待搜索商品图片的特征分别发送给N个中间转发层。
如图4所示,混合服务层将所述待搜索商品图片的特征分别发送给中间转发层1、中间转发层2、…、中间转发层N,以保证能够对所有的索引分别进行检索。
S303:每个中间转发层将所述待搜索商品图片的特征分别转发给至少一个检索服务层。
如图4所示,中间转发层0将待搜索商品图片的特征分别转发给检索服务层0、检索服务层1、…、检索服务层i,中间转发层N将搜索图片的特征分别转发给检索服务层j+1、检索服务层j+2、…、检索服务层M。
S304:每个所述检索服务层根据所述待搜索商品图片的特征和对应的索引分片中存储的倒排索引和正排索引,获取所述索引分片对应的K个目标商品的标识和各所述目标商品的当前属性。
如图4所示,检索服务层0用于对索引分片0进行商品搜索,检索服务层1用于对索引分片1进行商品搜索,…、检索服务层M用于对索引分片M进行商品搜索,最终,从每个索引分片中分别获取到K个目标商品的标识和当前属性。
S305:各检索服务层将获取的所述K个目标商品的标识和当前属性发送给中间转发层,由中间转发层汇总后转发给混合服务层。
S306:混合服务层根据各所述目标商品的标识和当前属性,对各所述目标商品进行排序,将排序后的目标商品作为商品搜索结果。
一种可选的实施方式中,为了实现各个模块的负载均衡,如图4所示,每个混合服务层、中间转发层、检索服务层均可以冗余部署多个,以实现各模块的负载均衡,并满足商品搜索请求的高并发性和容错处理。例如:当同时有多个用户发起商品搜索请求时,根据负载均衡原则,其中一个混合服务层获取该商品搜索请求,提取待搜索商品图片的特征,并且根据负载均衡原则,将待搜索商品图片的特征发送给多个中间转发层0中的一个、多个中间转发层1中的一个、…、多个中间转发层N中的一个。再以中间转发层0为例,中间转发层0在转发待搜索商品图片的特征时,根据负载均衡原则,将待搜索商品图片的特征转发给多个检索服务层0中的一个、多个检索服务层1中的一个、…多个检索服务层i中的一个。
本发明实施例中,通过设置三层分布式的在线搜索框架,保证了搜索系统的扩展性,同时,每个模块均冗余部署多个,实现了各模块的负载均衡,并提高了商品搜索系统的高并发性处理能力和容错处理能力。
图5为本发明实施例提供的正排索引的存储结构示意图,图6为本发明实施例提供的倒排索引的存储结构示意图,图7为本发明实施例提供的商品搜索方法的流程示意图三。下面结合一个具体的实施例详细描述正排索引和倒排索引的存储结构,以及根据待搜索商品图片的特征进行商品搜索的详细过程。
如图5所示,本实施例中,正排索引的结构是一个自定义的数组,数组中每个元素为相应商品图片的属性信息。具体的,对于数值型属性字段,比如:商品ID、销量、价格等属性以固定长度被存储在自定义数组中。对于变长属性信息字段,比如:图片URL(UniformResource Locator,统一资源定位符)被存储在额外的一段内存区域,其在这段内存区域的偏移位置会被记录在自定义数组中
本实施例中,倒排索引包括至少一个聚类,每个聚类对应一个商品列表,每个商品列表中包括各商品的标识和特征。如图6所示,倒排索引包括n个聚类,每一个聚类为拥有相似特征的一类图片的集合。
一种可选的实施方式中,倒排索引的创建过程如下:首先根据聚类算法对训练数据集中的图片特征进行训练,得到n个聚类中心。其中,聚类算法可以为K-Means聚类算法,还可以为其他聚类算法,本发明实施例不作具体限定。然后在构建索引时,对于每一个待索引商品,计算该商品图片的特征与这n个聚类中心的距离,将该商品的标识和特征添加到距离最近的聚类中心对应的商品列表中。可选的,商品图片的特征为高维深度神经网络特征。
在上述正排索引和倒排索引的存储结构的基础上,对每个索引分片进行商品搜索的过程如图7所示,本实施例的方法可以由服务器执行,更具体的,可以由图4中的检索服务层执行,如图7所示,该方法包括:
S701:获取所述待搜索商品图片的特征和所述倒排索引中的各聚类的聚类中心之间的距离,将距离最短的聚类对应的各商品作为候选商品。
具体的,根据倒排索引中存储的n个聚类中心,分别计算待搜索商品图片的特征和n个聚类中心之间的距离,得到距离最短的聚类,将距离最短的聚类对应的各商品作为候选商品。其中,计算距离时可以采用欧式距离、内积距离或者汉明距离,本发明实施例不作具体限定。
S702:根据各所述候选商品的特征和所述待搜索商品图片的特征之间的相似性,获取K个目标商品的标识。
遍历各个候选商品,计算每个候选商品的特征与待搜索商品图片的特征之间的相似性,其中,相似性也可以采用距离表征,例如:欧式距离、内积距离或者汉明距离等。将候选商品中,将相似性满足预设条件K个候选商品作为目标商品,从而得到K个目标商品的标识。
为了使得搜索结果中的商品均为有效商品(即处于在售状态的商品),一种可选的实施方式中,在各个索引分片中还存储商品的状态位图,所述状态位图用于指示各商品的当前状态为上架或者下架。
一种可选的实施方式中,状态位图可以与倒排索引对应存储,即每个聚类对应一个状态位图,该状态位图的每一个比特位用于指示该聚类中对应位置的商品的当前状态,例如:某比特位为0表示该比特位对应位置的商品为下架状态,某比特位为1表示该比特位对应位置的商品为上架状态。
该方式中,在确定目标商品时,首先根据所述状态位图,确定各候选商品的当前状态,然后针对当前状态为上架的各候选商品,获取候选商品的特征和待搜索商品图片的特征之间的相似性,将相似性满足预设条件的K个候选商品作为目标商品。可选的,在当前状态为上架的各候选商品中,将与待搜索商品图片的相似性最高的K个候选商品作为目标商品。
S703:根据各所述目标商品的标识和所述正排索引,获取各所述目标商品的当前属性。
本实施例中,在对商品构建索引时,按照商品特征之间的相似性进行聚类存储,从而在商品搜索时,能够根据聚类中心先确定出与待搜索商品图片相似的候选商品,然后再从候选商品中确定目标商品,从而缩小了商品搜索的范围,提高了商品搜索的效率。
本实施例中,进行商品搜索时,不仅考虑了商品的特征之间的相似性,还考虑了商品的当前状态,从而保证搜索结果中的各商品均是上架状态的商品,使得搜索结果能够反映最新的商品状态。
在上述实施例的基础上,为了进一步提高商品搜索结果的实时性,可以采用实时增量更新索引的方案。具体的,当商品发生变更时,实时对该商品对应的正排索引、倒排索引和状态位图进行构建或者更新,从而保证商品索引的实时性和准确性。
下面采用一个具体的实施例详细描述实时增量更新索引的方法,图8为本发明实施例提供的实时增量更新索引的流程示意图,如图8所示,该方法包括:
S801:接收商品更新消息,所述商品更新消息包括更新商品的标识,所述商品更新消息用于指示下述中一种:商品上架、商品下架、商品属性修改。
本实施例中,商品更新消息通过消息队列实时快速发送给服务器,服务器接收到该商品变更消息后,会立即进行处理。
具体的,所述商品更新消息包括更新商品的标识。本实施例中,商品更新消息的类型主要有三种,分别为:商品上架、商品下架、商品属性修改。
可以理解的,本发明实施例对于商品更新消息的具体内容不作具体限定,例如:当商品更新消息用于指示商品上架、商品下架时,商品更新消息可以具体包括更新商品的标识和状态(上架或者下架);当商品更新消息用于指示商品属性修改时,商品更新消息可以具体包括更新商品的标识和发生变更的属性。
S802:根据所述更新商品的标识,确定所述更新商品对应的索引分片。
本实施例中,针对电商平台的所有商品,划分为M个索引分片,每个索引分片用于存储部分商品的索引。具体的,可以建立各商品的标识与索引分片之间的对应关系,当接收到商品变更消息后,根据该消息中的更新商品的标识,确定出该更新商品对应的索引分片。
一种可选的实施方式中,可以根据商品的标识进行哈希运算,根据哈希运算结果,确定商品所对应的索引分片。其中,商品的标识为能够标识该商品的任意属性,例如:可以为商品ID,还可以为商品图片的URL。
S803:根据所述商品更新消息,对所述索引分片对应的正排索引、倒排索引和/或状态位图进行更新。
具体的,可以根据商品更新消息的类型,采用不同的处理策略。下面结合一个具体的实施例详细描述实时增量更新索引的具体过程。图9为本发明实施例提供的根据商品更新消息实时对索引分片进行增量更新的流程示意图,如图9所示,包括:
S8301:判断所述商品更新消息是否指示商品下架;若是,则执行S8302,若否,则执行S8303。
S8302:根据所述更新商品的标识,将所述状态位图中的所述更新商品的当前状态设置为下架。
本实施例中,从索引中删除一个已经下架的商品,只需要将状态位图中该商品对应的比特位设置为0(下架)即可。
S8303:判断所述商品更新消息是否指示商品属性修改,若是,则执行S8304,若否,则执行S8305。
S8304:根据所述商品更新消息,对所述正排索引中的所述更新商品的当前属性进行更新。
本实施例中,如果商品的当前属性发生更改,则直接对正排索引中存储的该属性值进行更新即可。例如:若更新属性为价格,则直接将正排索引中该商品的价格属性的值修改为更新后的价格即可。
其中,若变更属性为定长属性,由于属性字段的更新是一个原子操作,其与搜索流程和更新流程没有冲突,不需要加锁。若变更属性为变长属性,只需将该属性值添加在变长字段存储区域的最后,然后更新其在正排索引中的偏移位置即可,由于偏移位置以长整型数值存储,长整型数值的更改亦为原子操作,不会与搜索流程和更新流程发生冲突,也不需要加锁。
S8305:判断所述商品更新消息是否指示商品上架,若是,则执行S8306,若否,则结束。
S8306:根据所述更新商品的标识,判断所述更新商品是否上架过,若是,则执行S8307,若否,则执行S8308。
S8307:将所述状态位图中的所述更新商品的当前状态设置为上架。
S8308:提取所述更新商品的特征,根据所述更新商品的特征与所述倒排索引中的各聚类中心的距离,确定所述更新商品所属的目标聚类,将所述更新商品的标识和特征添加至所述目标聚类对应的商品列表中,并将所述更新商品的标识和属性添加至所述正排索引中,将所述状态位图中的所述更新商品的当前状态设置为上架。
本实施例中,对于上架商品,首先需要确认该商品之前是否上架过。如果有上架历史,说明之前已经提取过该商品图片的特征,因此,只需要将状态位图中该商品对应的比特位设为1(上架)即可,复用之前已经提取过的特征,而无需再次提取特征。
如果该商品没有上架历史,则需要对该商品对应的索引分片中的正排索引、倒排索引和状态位图分别进行更新。下面结合图10和图11分别进行详细描述。
图10为本发明实施例提供的正排索引的更新过程示意图,如图10所示,对正排索引进行更新时,需要将该新商品的各属性字段信息添加到正排索引中,对于图片URL单独存储在系统额外申请的变长字段区域的最后,并将图片URL在变长字段区域的偏移位置添加至该商品对应的正排索引中。
图11为本发明实施例提供的倒排索引的更新过程示意图,如图11所示,对倒排索引进行更新时,需要提取该商品图片的特征,并且计算该商品图片的特征与哪个聚类中心最相近,并将该商品的标识和特征添加到距离最近的聚类对应的商品列表中。
另外,对状态位图进行更新时,仅需要将状态位图中的该商品对应的比特位设置为1(上架)。
可以理解的,在电商平台中,一个商品可能出现反复上下架、变换买卖状态的情况,本实施例中,对于每一个上架商品都会通过追溯其历史状态来判断该商品的特征是否已被提取过。如果已经提取过,就不会再次重复提取,只会对状态位图中该商品对应的比特位进行更新(设置为1),使该商品能够被检索到;如果确定该商品特征从未被提取过,才会执行特征提取操作。通过上述过程,尽可能地减少了非常耗时的商品图片特征提取过程,极大提升了商品索引更新过程和商品搜索过程的性能和吞吐量,保证了商品搜索结果的实时性。
一种可选的实施方式中,如图11所示,为该倒排索引设置一个辅助数组,数组的长度与该倒排索引中聚类的数目相同,数组中的每个元素对应一个聚类,用于存储该聚类中最后一个商品的位置。在对倒排索引进行更新时,将该商品的标识和特征添加到距离最近的聚类对应的商品列表之后,还可以包括:
将所述更新商品在所述目标聚类中的位置,作为所述目标聚类的最后一个商品的位置。也就是说,如图11所示,在辅助数组中,将目标聚类对应的元素的值更新为该商品在目标聚类中的位置。
相应的,在根据倒排索引进行商品搜索时,例如:图7所示实施例中的S701中,在确定候选商品时,找到与待搜索商品图片的特征最相似的聚类后,只需要将该聚类中第一个商品至最后一个商品作为候选商品,其中,最后一个商品可以根据辅助数组中记录的最后一个商品的位置来确定。
可以理解的,由于倒排索引是根据商品更新消息实时更新的,更新过程需要可能会对倒排索引进行写操作;而商品搜索过程是根据用户发起的商品搜索请求进行实时搜索的,商品搜索过程会对倒排索引进行读操作。现有技术中,为了避免对同一内存的同时读写,通常会采用加锁方式,而加锁势必会影响商品搜索以及索引更新的实时性。而本实施例中,通过采用辅助数组记录倒排索引中最后一个商品的位置,在商品搜索过程中只对该位置之前的商品进行搜索,在索引更新过程中只对该位置之后的商品进行更新,即,通过采用无锁方式避免了对相同内存的同时读写,保证了商品搜索和索引更新的实时性。
本实施例中,通过根据商品更新消息实时对索引分片中的正排索引、倒排索引和状态位图进行增量更新,保证了索引分片能够动态准确地反映商品的真实状态,进而提高了商品搜索结果的实时性,商品搜索结果反映的是商品的真实状态,提高了用户商品搜索的体验。
在电商平台的应用场景,由于电商平台的商品数量巨大,即使采用实时增量更新索引的方式对商品索引进行更新,由于存在消息丢失或者其他因素,时间长久后,可能依然会出现商品索引与商品真实状态不符的情况。为了解决该问题,本实施例还提供一种定期全量构建索引的方式。
本实施例中,定期全量构建索引是基于电商平台的特征库进行,具体的,按照预设的周期,根据所述特征库中存储的各商品的标识,获取各商品的属性信息和状态信息;根据各商品的特征、属性信息和状态信息,构建所述各所述索引分片对应的正排索引、倒排索引和状态位图。
具体实施时,将正排索引、倒排索引和状态位图清空后,遍历特征库中的各商品,从零开始对每个商品依次按序编号,将该商品的当前属性添加至正排索引中,从特征库中获取该商品的特征,根据该商品特征与倒排索引中各聚类中心的聚类,将该商品特征添加至距离最近的聚类对应的商品列表中,并根据该商品的当前状态,在状态位图中设置该商品的上架状态或者下架状态。
可以理解的,全量构建索引过程中,对于正排索引、倒排索引和状态位图的构建过程,与增量更新索引过程中,对于新上架商品的正排索引、倒排索引和状态位图的更新过程是类似的,本发明实施例不再赘述。
需要说明的是,对于全量构建索引的周期,本发明实施例不作具体限定,可以根据实际应用场景合理设置。例如:对于商品数量巨大的电商平台,可以采用每周全量构建索引的方式。
由于全量构建索引时是根据特征库进行构建,因此,本实施例中还需要对特征库进行维护和更新。一种可选的实施方式,可以以预设时间段为周期,对特征库进行更新维护。例如:以天为周期,每天对特征库进行更新。
图12为本发明实施例提供的特征库的更新过程示意图,如图12所示,对特征库进行更新维护的过程如下:
(1)获取预设时间段内的商品更新消息日志。
具体的,将所有商品在一天内的更新消息都记录在一个消息日志中,在一天结束后,对该天的所有消息日志按顺序地逐个处理。
(2)针对所述日志中每一条用于指示商品上架的商品变更消息,根据所述商品变更消息中的更新商品的标识,确定特征库中是否存在所述更新商品的特征。
(3)若否,则提取所述更新商品的特征,并将所述更新商品的标识和所述更新商品的特征存储至所述特征库中。
由于在电商场景中,经常有商品反复上下架的情况,为节省资源,避免对已经提取的图片反复提取特征。本实施例中,在对一个新增商品的图片提取特征前,首先特征查询引擎查询特征库中是否存在该商品的特征。若不存在,再进行特征提取,并将提取的特征存储到特征库中,若存在,则无需重复提取该商品的特征。
如图12所示,一种可选的实施方式中,特征库中对商品特征进行存储时,也可以是分片存储。例如:将特征库划分为n个分片,每个分片存储部分商品的特征。其中,特征存储分片与索引分片可以是对应的,也可以是不对应的,本发明实施例不作具体限定。
其中,如图12所示,在利用特征查询引擎判断该新增图片的特征是否存在于特征库中时,特征查询引擎可以具体包括n个特征检索服务,每个特征检索服务用于检索对应的特征存储分片。特征检索合并服务用于根据n个特征检索服务的检索结果,综合确定特征库中是否存在该新增图片的特征。若不存在,则提取该图片的特征,并将该图片特征存储到其中一个特征存储分片中。
本发明实施例通过采用定期全量构建索引和实时增量更新索引相结合的方式,保证商品索引数据的完整性和实时性,进一步提高了商品搜索结果的准确性和实时性,使得商品搜索结果能够实时准确反映商品的真实状态。
在上述实施例的基础上,本发明实施例还提供一种倒排索引的内存管理优化方法。假设在实时增量更新索引流程中,需要将更新商品的特征添加至倒排索引中时,确定出更新商品所属的目标聚类为聚类n后,将更新商品的标识和特征添加至目标聚类对应的商品列表中,可以具体包括:
判断所述目标聚类对应的商品列表已占用内存是否达到预分配内存的预设比例。若是,则创建新的内存区域用于存放所述目标聚类对应的商品列表,所述新的内存区域大于所述预分配内存,将所述目标聚类对应的商品列表拷贝到所述新的内存区域中,并将所述更新商品的标识和特征添加至所述新的内存区域中,延迟释放旧的内存区域;若否,将所述更新商品的标识和特征添加至所述目标聚类对应的商品列表中。
图13为本发明实施例提供的倒排索引的内存管理过程示意图。下面结合图13进行举例说明。为了加速查询,倒排索引的各聚类所需要的内存都会进行预先分配。当需要向倒排索引的聚类n中添加商品时,判断聚类n的当前内存占用是否达到预分配内存总量的90%。若否,则直接将该商品的标识和特征添加至聚类n对应的商品列表中。若是,则创建一个新的内存区域,该新的内存区域的大小为原来预分配内存大小的两倍。原来聚类n对应的商品标识和特征全部被拷贝到新的内存区域中,在拷贝过程中,原来旧的内存区域一直提供对外查询与更新。当聚类n对应的商品标识和特征拷贝完成后,将待添加的商品标识和特征添加到新的内存区域中。此时,对旧内存区域的查询与更新都会切换到新的内存区域,并且,旧的内存区域会被延迟释放。
本实施例中的内存管理过程,采用了无锁的方式保证了高效的实时索引更新,提高了商品索引的实时性。
图14为本发明实施例提供的商品搜索装置的结构示意图一,如图14所示,本实施例提供的商品搜索装置1400,包括:获取模块1401、搜索模块1402和排序模块1403。
其中,获取模块1401,用于获取待搜索商品图片,并提取所述待搜索商品图片的特征;
搜索模块1402,用于根据所述待搜索商品图片的特征和M个索引分片中各自存储的倒排索引和正排索引,分别获取每个索引分片对应的K个目标商品的标识和各所述目标商品的当前属性,所述倒排索引用于指示各商品的标识和特征,所述正排索引用于指示各商品的标识和当前属性,M和K均为正整数;
排序模块1403,用于根据各所述目标商品的标识和当前属性,对各所述目标商品进行排序,将排序后的各目标商品作为商品搜索结果。
本实施例提供的商品搜索装置,可用于执行如图2所示的方法实施例,其实现原理和技术效果类似,此处不作赘述。
图15为本发明实施例提供的商品搜索装置的结构示意图二,在图14所示实施例的基础上,如图15所示,本实施例提供的商品搜索装置1400,还可以包括:索引增量更新模块1404和索引全量构建模块1405。
可选的,所述倒排索引包括至少一个聚类,每个聚类对应有至少一个商品的标识和特征;
所述搜索模块1402具体用于:
针对每个索引分片,获取所述待搜索商品图片的特征和所述倒排索引中的各聚类的聚类中心之间的距离,将距离最短的聚类对应的各商品作为候选商品;
根据各所述候选商品的特征和所述待搜索商品图片的特征之间的相似性,获取K个目标商品的标识;
根据各所述目标商品的标识和所述正排索引,获取各所述目标商品的当前属性。
可选的,各索引分片还用于存储商品的状态位图,所述状态位图用于指示各商品的当前状态为上架或者下架;
所述搜索模块1402具体用于:
根据所述状态位图,确定各候选商品的当前状态;
针对当前状态为上架的各候选商品,获取所述候选商品的特征和所述待搜索商品图片的特征之间的相似性,将相似性满足预设条件的K个候选商品的标识作为所述K个目标商品的标识。
可选的,所述索引增量更新模块1404,用于:
接收商品更新消息,所述商品更新消息包括更新商品的标识,所述商品更新消息用于指示下述中一种:商品上架、商品下架、商品属性修改;
根据所述更新商品的标识,确定所述更新商品对应的索引分片;
根据所述商品更新消息,对所述索引分片对应的正排索引、倒排索引和/或状态位图进行更新。
可选的,所述索引增量更新模块1404具体用于:
若所述商品更新消息用于指示商品上架,则:
根据所述更新商品的标识,判断所述更新商品是否上架过;
若是,则将所述状态位图中的所述更新商品的当前状态设置为上架;
若否,则提取所述更新商品的特征,根据所述更新商品的特征与所述倒排索引中的各聚类中心的距离,确定所述更新商品所属的目标聚类,将所述更新商品的标识和特征添加至所述目标聚类对应的商品列表中,并将所述更新商品的标识和属性添加至所述正排索引中,将所述状态位图中的所述更新商品的当前状态设置为上架。
可选的,所述索引增量更新模块1404具体用于:
若所述商品更新消息用于指示商品属性修改,则根据所述商品更新消息,对所述正排索引中的所述更新商品的当前属性进行更新;
若所述商品更新消息用于指示商品下架,则根据所述更新商品的标识,将所述状态位图中的所述更新商品的当前状态设置为下架。
可选的,所述索引全量构建模块1405,用于:
获取预设时间段内的商品更新消息日志;
针对所述日志中每一条用于指示商品上架的商品变更消息,根据所述商品变更消息中的更新商品的标识,确定特征库中是否存在所述更新商品的特征;
若否,则提取所述更新商品的特征,并将所述更新商品的标识和所述更新商品的特征存储至所述特征库中。
可选的,所述索引全量构建模块1405还用于:
按照预设的周期,根据所述特征库中存储的各商品的标识,获取各商品的属性信息和状态信息;根据各商品的特征、属性信息和状态信息,构建所述各所述索引分片对应的正排索引、倒排索引和状态位图。
可选的,所述索引增量更新模块1404还用于将所述更新商品在所述目标聚类中的位置,作为所述目标聚类的最后一个商品的位置;
相应的,所述搜索模块1402具体用于将所述距离最短的聚类中的所述最后一个商品的位置之前的各商品作为候选商品。
可选的,所述索引增量更新模块1404具体用于:
判断所述目标聚类对应的商品列表已占用内存是否达到预分配内存的预设比例;
若是,则创建新的内存区域用于存放所述目标聚类对应的商品列表,所述新的内存区域大于所述预分配内存,将所述目标聚类对应的商品列表拷贝到所述新的内存区域中,并将所述更新商品的标识和特征添加至所述新的内存区域中,延迟释放旧的内存区域;
若否,将所述更新商品的标识和特征添加至所述目标聚类对应的商品列表中。
可选的,所述搜索模块1402具体用于:将所述待搜索商品图片的特征分别发送给N个中间转发层,以使每个所述中间转发层将所述待搜索商品图片的特征分别转发给至少一个检索服务层,以使每个所述检索服务层根据所述待搜索商品图片的特征和对应的索引分片中存储的倒排索引和正排索引,获取所述索引分片对应的K个目标商品的标识和各所述目标商品的当前属性;其中,每个所述中间转发层对应的检索服务层不同,各检索服务层与各索引分片一一对应。
可选的,所述当前属性包括如下中的至少一种属性:商品价格、商品销量、商品评价、商品图片的统一资源定位符。
本实施例提供的商品搜索装置,可用于执行上述任一方法实施例的技术方案,其实现原理和技术效果类似,此处不作赘述。
图16为本发明实施例提供的服务器的硬件结构示意图,如图16所示,本实施例提供的服务器1600,包括:至少一个处理器1601和存储器1602。其中,处理器1601、存储器1602通过总线1603连接。
在具体实现过程中,至少一个处理器1601执行所述存储器1602存储的计算机执行指令,使得至少一个处理器1601执行上述任一方法实施例的商品搜索方法。
处理器1601的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
在上述的图16所示的实施例中,应理解,处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application SpecificIntegrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器。
总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(ExtendedIndustry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现上述任一方法实施例中的商品搜索方法。
上述的计算机可读存储介质,上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(Application Specific IntegratedCircuits,简称:ASIC)中。当然,处理器和可读存储介质也可以作为分立组件存在于设备中。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (24)
1.一种商品搜索方法,其特征在于,包括:
获取待搜索商品图片,并提取所述待搜索商品图片的特征;
根据所述待搜索商品图片的特征和M个索引分片中各自存储的倒排索引和正排索引,分别获取每个索引分片对应的K个目标商品的标识和各所述目标商品的当前属性,所述倒排索引用于指示各商品的标识和特征,所述正排索引用于指示各商品的标识和当前属性,M和K均为正整数;
根据各所述目标商品的标识和当前属性,对各所述目标商品进行排序,将排序后的各目标商品作为商品搜索结果;
所述倒排索引包括至少一个聚类,每个聚类对应有至少一个商品的标识和特征;
所述根据所述待搜索商品图片的特征和M个索引分片中各自存储的倒排索引和正排索引,分别获取每个索引分片对应的K个目标商品的标识和各所述目标商品的当前属性,包括:
针对每个索引分片,获取所述待搜索商品图片的特征和所述倒排索引中的各聚类的聚类中心之间的距离,将距离最短的聚类对应的各商品作为候选商品;
根据各所述候选商品的特征和所述待搜索商品图片的特征之间的相似性,获取K个目标商品的标识;
根据各所述目标商品的标识和所述正排索引,获取各所述目标商品的当前属性。
2.根据权利要求1所述的方法,其特征在于,各索引分片还用于存储商品的状态位图,所述状态位图用于指示各商品的当前状态为上架或者下架;
所述根据各所述候选商品的特征和所述待搜索商品图片的特征之间的相似性,获取K个目标商品的标识,包括:
根据所述状态位图,确定各候选商品的当前状态;
针对当前状态为上架的各候选商品,获取所述候选商品的特征和所述待搜索商品图片的特征之间的相似性,将相似性满足预设条件的K个候选商品的标识作为所述K个目标商品的标识。
3.根据权利要求2所述的方法,其特征在于,还包括:
接收商品更新消息,所述商品更新消息包括更新商品的标识,所述商品更新消息用于指示下述中一种:商品上架、商品下架、商品属性修改;
根据所述更新商品的标识,确定所述更新商品对应的索引分片;
根据所述商品更新消息,对所述索引分片对应的正排索引、倒排索引和/或状态位图进行更新。
4.根据权利要求3所述的方法,其特征在于,所述根据所述商品更新消息,对所述索引分片对应的正排索引、倒排索引和/或状态位图进行更新,包括:
若所述商品更新消息用于指示商品上架,则:
根据所述更新商品的标识,判断所述更新商品是否上架过;
若是,则将所述状态位图中的所述更新商品的当前状态设置为上架;
若否,则提取所述更新商品的特征,根据所述更新商品的特征与所述倒排索引中的各聚类中心的距离,确定所述更新商品所属的目标聚类,将所述更新商品的标识和特征添加至所述目标聚类对应的商品列表中,并将所述更新商品的标识和属性添加至所述正排索引中,将所述状态位图中的所述更新商品的当前状态设置为上架。
5.根据权利要求3所述的方法,其特征在于,所述根据所述商品更新消息,对所述索引分片对应的正排索引和/或倒排索引进行更新,包括:
若所述商品更新消息用于指示商品属性修改,则根据所述商品更新消息,对所述正排索引中的所述更新商品的当前属性进行更新;
若所述商品更新消息用于指示商品下架,则根据所述更新商品的标识,将所述状态位图中的所述更新商品的当前状态设置为下架。
6.根据权利要求2所述的方法,其特征在于,还包括:
获取预设时间段内的商品更新消息日志;
针对所述日志中每一条用于指示商品上架的商品变更消息,根据所述商品变更消息中的更新商品的标识,确定特征库中是否存在所述更新商品的特征;
若否,则提取所述更新商品的特征,并将所述更新商品的标识和所述更新商品的特征存储至所述特征库中。
7.根据权利要求6所述的方法,其特征在于,还包括:
按照预设的周期,根据所述特征库中存储的各商品的标识,获取各商品的属性信息和状态信息;根据各商品的特征、属性信息和状态信息,构建所述各所述索引分片对应的正排索引、倒排索引和状态位图。
8.根据权利要求4所述的方法,其特征在于,所述将所述更新商品的标识和特征添加至所述目标聚类对应的商品列表中之后,还包括:
将所述更新商品在所述目标聚类中的位置,作为所述目标聚类的最后一个商品的位置;
相应的,所述将距离最短的聚类对应的各商品作为候选商品,包括:
将所述距离最短的聚类中的所述最后一个商品的位置之前的各商品作为候选商品。
9.根据权利要求4所述的方法,其特征在于,所述将所述更新商品的标识和特征添加至所述目标聚类对应的商品列表中,包括:
判断所述目标聚类对应的商品列表已占用内存是否达到预分配内存的预设比例;
若是,则创建新的内存区域用于存放所述目标聚类对应的商品列表,所述新的内存区域大于所述预分配内存,将所述目标聚类对应的商品列表拷贝到所述新的内存区域中,并将所述更新商品的标识和特征添加至所述新的内存区域中,延迟释放旧的内存区域;
若否,将所述更新商品的标识和特征添加至所述目标聚类对应的商品列表中。
10.根据权利要求1至9任一项所述的方法,其特征在于,所述根据所述待搜索商品图片的特征和M个索引分片中各自存储的倒排索引和正排索引,分别获取每个索引分片对应的K个目标商品的标识和各所述目标商品的当前属性,包括:
将所述待搜索商品图片的特征分别发送给N个中间转发层,以使每个所述中间转发层将所述待搜索商品图片的特征分别转发给至少一个检索服务层,以使每个所述检索服务层根据所述待搜索商品图片的特征和对应的索引分片中存储的倒排索引和正排索引,获取所述索引分片对应的K个目标商品的标识和各所述目标商品的当前属性;其中,每个所述中间转发层对应的检索服务层不同,各检索服务层与各索引分片一一对应。
11.根据权利要求1至9任一项所述的方法,其特征在于,所述当前属性包括如下中的至少一种属性:商品价格、商品销量、商品评价、商品图片的统一资源定位符。
12.一种商品搜索装置,其特征在于,包括:
获取模块,用于获取待搜索商品图片,并提取所述待搜索商品图片的特征;
搜索模块,用于根据所述待搜索商品图片的特征和M个索引分片中各自存储的倒排索引和正排索引,分别获取每个索引分片对应的K个目标商品的标识和各所述目标商品的当前属性,所述倒排索引用于指示各商品的标识和特征,所述正排索引用于指示各商品的标识和当前属性,M和K均为正整数;
排序模块,用于根据各所述目标商品的标识和当前属性,对各所述目标商品进行排序,将排序后的各目标商品作为商品搜索结果;
所述倒排索引包括至少一个聚类,每个聚类对应有至少一个商品的标识和特征;
所述搜索模块具体用于:
针对每个索引分片,获取所述待搜索商品图片的特征和所述倒排索引中的各聚类的聚类中心之间的距离,将距离最短的聚类对应的各商品作为候选商品;
根据各所述候选商品的特征和所述待搜索商品图片的特征之间的相似性,获取K个目标商品的标识;
根据各所述目标商品的标识和所述正排索引,获取各所述目标商品的当前属性。
13.根据权利要求12所述的装置,其特征在于,各索引分片还用于存储商品的状态位图,所述状态位图用于指示各商品的当前状态为上架或者下架;
所述搜索模块具体用于:
根据所述状态位图,确定各候选商品的当前状态;
针对当前状态为上架的各候选商品,获取所述候选商品的特征和所述待搜索商品图片的特征之间的相似性,将相似性满足预设条件的K个候选商品的标识作为所述K个目标商品的标识。
14.根据权利要求13所述的装置,其特征在于,还包括:索引增量更新模块,用于:
接收商品更新消息,所述商品更新消息包括更新商品的标识,所述商品更新消息用于指示下述中一种:商品上架、商品下架、商品属性修改;
根据所述更新商品的标识,确定所述更新商品对应的索引分片;
根据所述商品更新消息,对所述索引分片对应的正排索引、倒排索引和/或状态位图进行更新。
15.根据权利要求14所述的装置,其特征在于,所述索引增量更新模块具体用于:
若所述商品更新消息用于指示商品上架,则:
根据所述更新商品的标识,判断所述更新商品是否上架过;
若是,则将所述状态位图中的所述更新商品的当前状态设置为上架;
若否,则提取所述更新商品的特征,根据所述更新商品的特征与所述倒排索引中的各聚类中心的距离,确定所述更新商品所属的目标聚类,将所述更新商品的标识和特征添加至所述目标聚类对应的商品列表中,并将所述更新商品的标识和属性添加至所述正排索引中,将所述状态位图中的所述更新商品的当前状态设置为上架。
16.根据权利要求14所述的装置,其特征在于,所述索引增量更新模块具体用于:
若所述商品更新消息用于指示商品属性修改,则根据所述商品更新消息,对所述正排索引中的所述更新商品的当前属性进行更新;
若所述商品更新消息用于指示商品下架,则根据所述更新商品的标识,将所述状态位图中的所述更新商品的当前状态设置为下架。
17.根据权利要求13所述的装置,其特征在于,还包括:索引全量构建模块,用于:
获取预设时间段内的商品更新消息日志;
针对所述日志中每一条用于指示商品上架的商品变更消息,根据所述商品变更消息中的更新商品的标识,确定特征库中是否存在所述更新商品的特征;
若否,则提取所述更新商品的特征,并将所述更新商品的标识和所述更新商品的特征存储至所述特征库中。
18.根据权利要求17所述的装置,其特征在于,所述索引全量构建模块还用于:
按照预设的周期,根据所述特征库中存储的各商品的标识,获取各商品的属性信息和状态信息;根据各商品的特征、属性信息和状态信息,构建所述各所述索引分片对应的正排索引、倒排索引和状态位图。
19.根据权利要求15所述的装置,其特征在于,
所述索引增量更新模块还用于将所述更新商品在所述目标聚类中的位置,作为所述目标聚类的最后一个商品的位置;
相应的,所述搜索模块具体用于将所述距离最短的聚类中的所述最后一个商品的位置之前的各商品作为候选商品。
20.根据权利要求15所述的装置,其特征在于,所述索引增量更新模块具体用于:
判断所述目标聚类对应的商品列表已占用内存是否达到预分配内存的预设比例;
若是,则创建新的内存区域用于存放所述目标聚类对应的商品列表,所述新的内存区域大于所述预分配内存,将所述目标聚类对应的商品列表拷贝到所述新的内存区域中,并将所述更新商品的标识和特征添加至所述新的内存区域中,延迟释放旧的内存区域;
若否,将所述更新商品的标识和特征添加至所述目标聚类对应的商品列表中。
21.根据权利要求12至20任一项所述的装置,其特征在于,所述搜索模块具体用于:将所述待搜索商品图片的特征分别发送给N个中间转发层,以使每个所述中间转发层将所述待搜索商品图片的特征分别转发给至少一个检索服务层,以使每个所述检索服务层根据所述待搜索商品图片的特征和对应的索引分片中存储的倒排索引和正排索引,获取所述索引分片对应的K个目标商品的标识和各所述目标商品的当前属性;其中,每个所述中间转发层对应的检索服务层不同,各检索服务层与各索引分片一一对应。
22.根据权利要求12至20任一项所述的装置,其特征在于,所述当前属性包括如下中的至少一种属性:商品价格、商品销量、商品评价、商品图片的统一资源定位符。
23.一种服务器,其特征在于,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1至11任一项所述的方法。
24.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1至11任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811369109.7A CN111198961B (zh) | 2018-11-16 | 2018-11-16 | 商品搜索方法、装置及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811369109.7A CN111198961B (zh) | 2018-11-16 | 2018-11-16 | 商品搜索方法、装置及服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111198961A CN111198961A (zh) | 2020-05-26 |
CN111198961B true CN111198961B (zh) | 2024-01-16 |
Family
ID=70745818
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811369109.7A Active CN111198961B (zh) | 2018-11-16 | 2018-11-16 | 商品搜索方法、装置及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111198961B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112330398B (zh) * | 2020-10-30 | 2024-04-09 | 京东科技控股股份有限公司 | 一种对象处理方法、装置、电子设备及存储介质 |
CN112699274A (zh) * | 2020-12-25 | 2021-04-23 | 北京达佳互联信息技术有限公司 | 一种对象搜索方法、装置及计算机存储介质 |
CN113362144B (zh) * | 2021-07-19 | 2023-05-05 | 贵州优特云科技有限公司 | 基于大数据的电商购物推荐方法及系统 |
CN113656182A (zh) * | 2021-08-23 | 2021-11-16 | 北京沃东天骏信息技术有限公司 | 一种内存伸缩管理方法、装置、电子设备以及存储介质 |
CN113868510A (zh) * | 2021-09-15 | 2021-12-31 | 猪八戒股份有限公司 | 一种数据处理方法、设备及计算机可读存储介质 |
CN114971816A (zh) * | 2022-06-30 | 2022-08-30 | 唯品会(广州)软件有限公司 | 一种商品提示词索引的构建方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012146136A1 (zh) * | 2011-04-26 | 2012-11-01 | 北京百度网讯科技有限公司 | 信息搜索方法及系统 |
CN103412938A (zh) * | 2013-08-22 | 2013-11-27 | 成都数之联科技有限公司 | 一种基于图片交互式多目标提取的商品比价方法 |
CN104765891A (zh) * | 2015-05-06 | 2015-07-08 | 苏州搜客信息技术有限公司 | 一种基于图像的搜索购物方法 |
CN107133362A (zh) * | 2017-06-01 | 2017-09-05 | 北京凤凰理理它信息技术有限公司 | 商品信息搜索方法、系统、计算机程序及电子设备 |
-
2018
- 2018-11-16 CN CN201811369109.7A patent/CN111198961B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012146136A1 (zh) * | 2011-04-26 | 2012-11-01 | 北京百度网讯科技有限公司 | 信息搜索方法及系统 |
CN103412938A (zh) * | 2013-08-22 | 2013-11-27 | 成都数之联科技有限公司 | 一种基于图片交互式多目标提取的商品比价方法 |
CN104765891A (zh) * | 2015-05-06 | 2015-07-08 | 苏州搜客信息技术有限公司 | 一种基于图像的搜索购物方法 |
CN107133362A (zh) * | 2017-06-01 | 2017-09-05 | 北京凤凰理理它信息技术有限公司 | 商品信息搜索方法、系统、计算机程序及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111198961A (zh) | 2020-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111198961B (zh) | 商品搜索方法、装置及服务器 | |
US9223841B2 (en) | System and method for providing high availability data | |
US10405033B2 (en) | Method for controlling network media information publication, apparatus, and server | |
CN110909182A (zh) | 多媒体资源搜索方法、装置、计算机设备及存储介质 | |
CN108228799B (zh) | 对象索引信息的存储方法及装置 | |
CN112181993A (zh) | 业务数据查询方法、装置、服务器及存储介质 | |
CN111159563A (zh) | 用户兴趣点信息的确定方法、装置、设备及存储介质 | |
US20180302268A1 (en) | Systems and Methods for Real Time Streaming | |
CN112085058A (zh) | 一种对象组合召回方法、装置、电子设备及存储介质 | |
CN112445833B (zh) | 一种分布式数据库的数据分页查询方法、装置和系统 | |
CN111582967A (zh) | 内容搜索方法、装置、设备及存储介质 | |
CN114564501A (zh) | 一种数据库数据存储、查询方法、装置、设备及介质 | |
CN103891244B (zh) | 一种进行数据存储和检索的方法及装置 | |
WO2020237511A1 (zh) | 相似性搜索方法、装置、服务器及存储介质 | |
CN110750555A (zh) | 用于生成索引的方法、装置、计算设备以及介质 | |
CN113868440B (zh) | 特征库的管理方法、装置、设备及介质 | |
CN117478699B (zh) | 基于多网融合物联网卡的数据写入方法、计算机设备 | |
CN116578767B (zh) | 语义数据处理、内容推荐方法、装置和计算机设备 | |
CN112506877B (zh) | 基于重删域的数据重删方法、装置、系统及存储设备 | |
CN112182357B (zh) | 数据推荐方法、装置、计算机设备和存储介质 | |
CN114860731A (zh) | 指标数据的管理方法及装置 | |
CN115827973A (zh) | 内容搜索方法、装置、电子设备及存储介质 | |
CN116204526A (zh) | 一种数据的获取方法、装置、电子设备和存储介质 | |
CN115114283A (zh) | 数据处理方法、装置、计算机可读介质及电子设备 | |
CN117688125A (zh) | 一种索引管理方法、服务器及服务器集群 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |