|
|
# 全球购Yoho商品搜索引擎融合方案
|
|
|
|
|
|
目前全球购和yoho商品在搜索引擎中的索引是不同的,分别是tplproduct 和productindex。由于productindex的字段远远多于tplproduct的字段,所以整个融合过程会分为几个阶段,循序渐进来完成2个商品共用一个索引。
|
|
|
|
|
|
- 适配模式。通过开发适配器,把全球购的字段转化成yoho商品的字段,全球购商品更新到productindex中
|
|
|
|
|
|
|
|
|
### Version
|
|
|
1.0.0
|
|
|
|
|
|
### tplproduct字段定义
|
|
|
字段 | 说明
|
|
|
-----|-----
|
|
|
product_skn|商品skn
|
|
|
product_name|商品名称
|
|
|
source|商品来源
|
|
|
brand_id|品牌id
|
|
|
sort_one|一级品类id
|
|
|
sort_two|二级品类id
|
|
|
sort_three|三级品类id
|
|
|
sort_four|四级品类id
|
|
|
product_url|商品网址
|
|
|
site_id|网站id
|
|
|
is_limited|是否是限量商品
|
|
|
country_id|国家编码
|
|
|
gender|性别 1.男 2.女 3.通用
|
|
|
currency_id|货币id
|
|
|
tag_price|吊牌价
|
|
|
orign_price|销售价(计算汇率后的)
|
|
|
sell_price|最小销售价
|
|
|
goods_price|最小商品价格(计算汇率后的)
|
|
|
got_price|最小到手价
|
|
|
weight|重量
|
|
|
size_info|尺码
|
|
|
status|商品状态
|
|
|
url_status|爬虫状态 1.生效 2.失效
|
|
|
stock_status|库存状态 1.有 2.无
|
|
|
operate_userid|操作人id
|
|
|
order|排序序列
|
|
|
create_time|创建时间
|
|
|
update_time|更新时间
|
|
|
shelf_time|上架时间
|
|
|
offshelf_time|定时下架时间
|
|
|
auto_shelf|是否自动上架 1.自动 2.手动
|
|
|
color_ids|skc颜色id组合 (1,2,3)
|
|
|
skc|skc的集合
|
|
|
cover|商品封面图
|
|
|
|
|
|
### productindex字段定义
|
|
|
字段 | 定义 | NULL| Key|DEFAULT
|
|
|
-----|-----|-----|----|-----
|
|
|
id |int(11)| unsigned| NO | 0
|
|
|
product_id |int(11) |unsigned |NO | 0
|
|
|
shelve_time int(10)| unsigned |NO | 0
|
|
|
shelve_day |varchar(10)| YES |
|
|
|
cn_alphabet| varchar(255)| YES |
|
|
|
product_name| varchar(100) |YES |
|
|
|
brand_name_cn| varchar(50)| YES |
|
|
|
brand_name_en| varchar(100)| YES |
|
|
|
brand_keyword| varchar(200)| YES |
|
|
|
hot_keyword| varchar(100)| YES |
|
|
|
brand_name| varchar(50)| YES |
|
|
|
brand_alif| varchar(1)| YES |
|
|
|
style| varchar(200)| YES |
|
|
|
sales_phrase| varchar(100)| YES |
|
|
|
max_sort_id| smallint(5)| unsigned| NO| 0
|
|
|
max_sort_name| varchar(42)| YES |
|
|
|
max_sort| varchar(30) |YES |
|
|
|
middle_sort_id| smallint(5)| unsigned| NO | 0
|
|
|
middle_sort| varchar(30) |YES |
|
|
|
middle_sort_name| varchar(42)| YES |
|
|
|
small_sort_id| smallint(5) |unsigned| NO | 0
|
|
|
small_sort| varchar(30)| YES |
|
|
|
small_sort_name| varchar(42)| YES |
|
|
|
gender| enum('1','2','3')| YES |
|
|
|
gender_s| varchar(3)| YES |
|
|
|
brand_id| smallint(5)| unsigned| NO| 0
|
|
|
is_special| enum('Y','N')| YES | N|
|
|
|
status| tinyint(4)| NO | 0
|
|
|
seasons_s| int(0) |YES |
|
|
|
isspecial| int(1)| NO | 0|
|
|
|
is_hot |enum('Y','N')| YES | N|
|
|
|
folder_id| int(11) |YES | 0|
|
|
|
ishot| int(1)| NO | 0|
|
|
|
ispromotion| smallint(6)| NO | 0|
|
|
|
series_id| int(11)| unsigned| NO| 0|
|
|
|
is_sales| enum('Y','N')| YES | Y|
|
|
|
issales int(1)| NO ||| 0|
|
|
|
is_advance| enum('Y','N')| YES | N|
|
|
|
isadvance| int(1)| NO| 0||
|
|
|
is_auditing| enum('Y','N')| YES | Y||
|
|
|
isauditing| int(1)| NO | 0||
|
|
|
attribute| tinyint(4)| NO | |0|
|
|
|
seasons |set('spring','summer','autumn','winter','seasons')| YES |||
|
|
|
is_down| enum('Y','N')| YES | N||
|
|
|
isdown| int(1)| NO | 0||
|
|
|
isrecommend| int(1)| NO | 0|
|
|
|
is_outlets| int(1)| NO | 0|
|
|
|
first_shelve_time| int(10)| unsigned| YES | 0|
|
|
|
sell_channels| set('0','1','2','3','4','5','6','7','8','9')| YES | 0|
|
|
|
product_skn| int(11)| unsigned| NO |
|
|
|
isnew| varchar(1)| NO |
|
|
|
brand_domain| varchar(50) |YES |
|
|
|
islimited| varchar(1) |NO |
|
|
|
edit_time| int(10)| unsigned| NO | 0|
|
|
|
special_price| decimal(10,2)| YES | 0|
|
|
|
market_price| decimal(10,2)| YES | 0|
|
|
|
vip_discount_type| tinyint(4)| YES | 1|
|
|
|
vip_price |decimal(10,2)| YES | 0|
|
|
|
vip1_price| decimal(10,2)| YES | 0|
|
|
|
vip2_price| decimal(10,2)| YES | 0|
|
|
|
vip3_price |decimal(10,2)| YES | 0|
|
|
|
sales_price| decimal(10,2)| YES | 0|
|
|
|
promotion_discount_int| decimal(12,0)| YES |
|
|
|
promotion_discount| decimal(13,3)| YES |
|
|
|
specialoffer| varchar(1)| NO |
|
|
|
is_discount| varchar(1) |NO |
|
|
|
product_keyword| varchar(200)| YES |
|
|
|
color_ids |longtext |YES |
|
|
|
color_names |longtext| YES |
|
|
|
standard_ids |longtext |YES |
|
|
|
standard_names |longtext| YES |
|
|
|
standard_only_names |longtext |YES |
|
|
|
sales_num| decimal(33,0)| YES |
|
|
|
storage_num |decimal(33,0)| YES |
|
|
|
is_soon_sold_out| varchar(1) |NO |
|
|
|
is_sold_out| varchar(1)| NO |
|
|
|
sold_out| varchar(1)| NO |
|
|
|
size_ids |longtext| YES |
|
|
|
style_ids |longtext| YES |
|
|
|
goods_list| mediumtext |YES |
|
|
|
default_images| varchar(255)| YES |
|
|
|
activities |mediumtext |YES |
|
|
|
sort_weight| decimal(11,0)| NO | 0|
|
|
|
brand_weight| decimal(11,0)| NO | 0|
|
|
|
yohood_id| smallint(6)| YES |
|
|
|
base_pin_ratio |double| YES |
|
|
|
breaking_rate| double |YES |
|
|
|
discount_score| double |YES |
|
|
|
pool_id |longtext| YES |
|
|
|
|
|
|
|
|
|
|
|
|
### 适配器设计
|
|
|
1 全球购商品融合到productindex
|
|
|
|
|
|
(1)适配器通过调用全球购的url+key获取全球购商品,参考:
|
|
|
```sh
|
|
|
wget ${tbl.product.url}getproductscountforsearch?client_type=iphone&client_secret=xx
|
|
|
```
|
|
|
其中xx为客户端key,需要进行md5的转化,转化如下:
|
|
|
```sh
|
|
|
clientkey= MD5Util.string2MD5("client_type=iphone&private_key=" + ${tbl.product.private.key});
|
|
|
${tbl.product.url}:全球购url ,可以找周硕要
|
|
|
${tbl.product.private.key}:全球购产品密钥
|
|
|
```
|
|
|
(2)获取全球购产品后,需要参考yoho商品productindex 封装成商品list。
|
|
|
```sh
|
|
|
List<ProductIndex> globalProducts = ProductAdaprotr.changed(List<tplproduct>);
|
|
|
```
|
|
|
(3)搜索这边会每隔一段时间(默认间隔为1个小时)获取globalProducts,之后会进行product_index的更新,这样全球购商品就能在product_index里面搜索得到。
|
|
|
|
|
|
2 yoho部分商品(部分品牌下的商品)融合到全球购索引
|
|
|
商品适配模块需要支持逆向适配,其中:
|
|
|
(1)部分brand品牌下的商品需要按照全球购的字段转成全球购商品列表。
|
|
|
可直接从yh_shops库product表中根据brand查到对应的product,然后按照全球购的字段转成全球购的商品列表
|
|
|
```sh
|
|
|
List<product> = XXservice.getProduct(String brandname);
|
|
|
List<tplproduct> yohoProducts = ProductAdaprotr.changedfromProductIndex(List<product>);
|
|
|
```
|
|
|
(2)全球购对着部分商品列表进行存储计算。
|
|
|
(3)搜索引擎会定时从全球购获取商品列表,并进行tplproduct更新的操作。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 全球购Yoho商品搜索引擎融合方案
|
|
|
|
|
|
目前全球购和yoho商品在搜索引擎中的索引是不同的,分别是tplproduct 和productindex。由于productindex的字段远远多于tplproduct的字段,所以整个融合过程会分为几个阶段,循序渐进来完成2个商品共用一个索引。
|
|
|
|
|
|
- 适配模式。通过开发适配器,把全球购的字段转化成yoho商品的字段,全球购商品更新到productindex中
|
|
|
|
|
|
|
|
|
### Version
|
|
|
1.0.0
|
|
|
|
|
|
### tplproduct字段定义
|
|
|
字段 | 说明
|
|
|
-----|-----
|
|
|
product_skn|商品skn
|
|
|
product_name|商品名称
|
|
|
source|商品来源
|
|
|
brand_id|品牌id
|
|
|
sort_one|一级品类id
|
|
|
sort_two|二级品类id
|
|
|
sort_three|三级品类id
|
|
|
sort_four|四级品类id
|
|
|
product_url|商品网址
|
|
|
site_id|网站id
|
|
|
is_limited|是否是限量商品
|
|
|
country_id|国家编码
|
|
|
gender|性别 1.男 2.女 3.通用
|
|
|
currency_id|货币id
|
|
|
tag_price|吊牌价
|
|
|
orign_price|销售价(计算汇率后的)
|
|
|
sell_price|最小销售价
|
|
|
goods_price|最小商品价格(计算汇率后的)
|
|
|
got_price|最小到手价
|
|
|
weight|重量
|
|
|
size_info|尺码
|
|
|
status|商品状态
|
|
|
url_status|爬虫状态 1.生效 2.失效
|
|
|
stock_status|库存状态 1.有 2.无
|
|
|
operate_userid|操作人id
|
|
|
order|排序序列
|
|
|
create_time|创建时间
|
|
|
update_time|更新时间
|
|
|
shelf_time|上架时间
|
|
|
offshelf_time|定时下架时间
|
|
|
auto_shelf|是否自动上架 1.自动 2.手动
|
|
|
color_ids|skc颜色id组合 (1,2,3)
|
|
|
skc|skc的集合
|
|
|
cover|商品封面图
|
|
|
|
|
|
### productindex字段定义
|
|
|
字段 | 定义 | NULL| Key|DEFAULT
|
|
|
-----|-----|-----|----|-----
|
|
|
id |int(11)| unsigned| NO | 0
|
|
|
product_id |int(11) |unsigned |NO | 0
|
|
|
shelve_time int(10)| unsigned |NO | 0
|
|
|
shelve_day |varchar(10)| YES |
|
|
|
cn_alphabet| varchar(255)| YES |
|
|
|
product_name| varchar(100) |YES |
|
|
|
brand_name_cn| varchar(50)| YES |
|
|
|
brand_name_en| varchar(100)| YES |
|
|
|
brand_keyword| varchar(200)| YES |
|
|
|
hot_keyword| varchar(100)| YES |
|
|
|
brand_name| varchar(50)| YES |
|
|
|
brand_alif| varchar(1)| YES |
|
|
|
style| varchar(200)| YES |
|
|
|
sales_phrase| varchar(100)| YES |
|
|
|
max_sort_id| smallint(5)| unsigned| NO| 0
|
|
|
max_sort_name| varchar(42)| YES |
|
|
|
max_sort| varchar(30) |YES |
|
|
|
middle_sort_id| smallint(5)| unsigned| NO | 0
|
|
|
middle_sort| varchar(30) |YES |
|
|
|
middle_sort_name| varchar(42)| YES |
|
|
|
small_sort_id| smallint(5) |unsigned| NO | 0
|
|
|
small_sort| varchar(30)| YES |
|
|
|
small_sort_name| varchar(42)| YES |
|
|
|
gender| enum('1','2','3')| YES |
|
|
|
gender_s| varchar(3)| YES |
|
|
|
brand_id| smallint(5)| unsigned| NO| 0
|
|
|
is_special| enum('Y','N')| YES | N|
|
|
|
status| tinyint(4)| NO | 0
|
|
|
seasons_s| int(0) |YES |
|
|
|
isspecial| int(1)| NO | 0|
|
|
|
is_hot |enum('Y','N')| YES | N|
|
|
|
folder_id| int(11) |YES | 0|
|
|
|
ishot| int(1)| NO | 0|
|
|
|
ispromotion| smallint(6)| NO | 0|
|
|
|
series_id| int(11)| unsigned| NO| 0|
|
|
|
is_sales| enum('Y','N')| YES | Y|
|
|
|
issales int(1)| NO ||| 0|
|
|
|
is_advance| enum('Y','N')| YES | N|
|
|
|
isadvance| int(1)| NO| 0||
|
|
|
is_auditing| enum('Y','N')| YES | Y||
|
|
|
isauditing| int(1)| NO | 0||
|
|
|
attribute| tinyint(4)| NO | |0|
|
|
|
seasons |set('spring','summer','autumn','winter','seasons')| YES |||
|
|
|
is_down| enum('Y','N')| YES | N||
|
|
|
isdown| int(1)| NO | 0||
|
|
|
isrecommend| int(1)| NO | 0|
|
|
|
is_outlets| int(1)| NO | 0|
|
|
|
first_shelve_time| int(10)| unsigned| YES | 0|
|
|
|
sell_channels| set('0','1','2','3','4','5','6','7','8','9')| YES | 0|
|
|
|
product_skn| int(11)| unsigned| NO |
|
|
|
isnew| varchar(1)| NO |
|
|
|
brand_domain| varchar(50) |YES |
|
|
|
islimited| varchar(1) |NO |
|
|
|
edit_time| int(10)| unsigned| NO | 0|
|
|
|
special_price| decimal(10,2)| YES | 0|
|
|
|
market_price| decimal(10,2)| YES | 0|
|
|
|
vip_discount_type| tinyint(4)| YES | 1|
|
|
|
vip_price |decimal(10,2)| YES | 0|
|
|
|
vip1_price| decimal(10,2)| YES | 0|
|
|
|
vip2_price| decimal(10,2)| YES | 0|
|
|
|
vip3_price |decimal(10,2)| YES | 0|
|
|
|
sales_price| decimal(10,2)| YES | 0|
|
|
|
promotion_discount_int| decimal(12,0)| YES |
|
|
|
promotion_discount| decimal(13,3)| YES |
|
|
|
specialoffer| varchar(1)| NO |
|
|
|
is_discount| varchar(1) |NO |
|
|
|
product_keyword| varchar(200)| YES |
|
|
|
color_ids |longtext |YES |
|
|
|
color_names |longtext| YES |
|
|
|
standard_ids |longtext |YES |
|
|
|
standard_names |longtext| YES |
|
|
|
standard_only_names |longtext |YES |
|
|
|
sales_num| decimal(33,0)| YES |
|
|
|
storage_num |decimal(33,0)| YES |
|
|
|
is_soon_sold_out| varchar(1) |NO |
|
|
|
is_sold_out| varchar(1)| NO |
|
|
|
sold_out| varchar(1)| NO |
|
|
|
size_ids |longtext| YES |
|
|
|
style_ids |longtext| YES |
|
|
|
goods_list| mediumtext |YES |
|
|
|
default_images| varchar(255)| YES |
|
|
|
activities |mediumtext |YES |
|
|
|
sort_weight| decimal(11,0)| NO | 0|
|
|
|
brand_weight| decimal(11,0)| NO | 0|
|
|
|
yohood_id| smallint(6)| YES |
|
|
|
base_pin_ratio |double| YES |
|
|
|
breaking_rate| double |YES |
|
|
|
discount_score| double |YES |
|
|
|
pool_id |longtext| YES |
|
|
|
|
|
|
|
|
|
|
|
|
### 适配器设计
|
|
|
1 全球购商品融合到productindex
|
|
|
|
|
|
(1)适配器通过调用全球购的url+key获取全球购商品,参考:
|
|
|
```sh
|
|
|
wget ${tbl.product.url}getproductscountforsearch?client_type=iphone&client_secret=xx
|
|
|
```
|
|
|
其中xx为客户端key,需要进行md5的转化,转化如下:
|
|
|
```sh
|
|
|
clientkey= MD5Util.string2MD5("client_type=iphone&private_key=" + ${tbl.product.private.key});
|
|
|
${tbl.product.url}:全球购url ,可以找周硕要
|
|
|
${tbl.product.private.key}:全球购产品密钥
|
|
|
```
|
|
|
(2)获取全球购产品后,需要参考yoho商品productindex 封装成商品list。
|
|
|
```sh
|
|
|
List<ProductIndex> globalProducts = ProductAdaprotr.changed(List<tplproduct>);
|
|
|
```
|
|
|
(3)搜索这边会每隔一段时间(默认间隔为1个小时)获取globalProducts,之后会进行product_index的更新,这样全球购商品就能在product_index里面搜索得到。
|
|
|
|
|
|
2 yoho部分商品(部分品牌下的商品)融合到全球购索引
|
|
|
商品适配模块需要支持逆向适配,其中:
|
|
|
(1)部分brand品牌下的商品需要按照全球购的字段转成全球购商品列表。
|
|
|
可直接从yh_shops库product表中根据brand查到对应的product,然后按照全球购的字段转成全球购的商品列表
|
|
|
```sh
|
|
|
List<product> = XXservice.getProduct(String brandname);
|
|
|
List<tplproduct> yohoProducts = ProductAdaprotr.changedfromProductIndex(List<product>);
|
|
|
```
|
|
|
(2)全球购对着部分商品列表进行存储计算。
|
|
|
(3)搜索引擎会定时从全球购获取商品列表,并进行tplproduct更新的操作。
|
|
|
|
|
|
|
|
|
|
|
|
|
...
|
...
|
|