Authored by henry

test

1 -## 1、全球购yoho商品搜索引擎融合方案## 1 +# 全球购Yoho商品搜索引擎融合方案
2 2
3 -(/sort_sizes.json)  
4 -请求方式:get  
5 -#### 请求参数  
6 -| 参数名称 | 参数类型 | 可否为空 | 示例 | 默认值 | 备注 |  
7 -|:-------| -----:|-----:|-----:|-----:|----:|  
8 -|breaking|String|否|1|1|1:断码 0:非断码,传空字符串则表示不限|  
9 -|storage_num|String|否|1|1|sku库存的最小值|  
10 -|sort|String|否|119|null|小分类id,以逗号隔开|  
11 -|size|String|否|203|null|尺码 Id,以逗号隔开|  
12 -|productStatus|String|否|1|1|商品状态1:上架 非1:下架,主动传空字符串表示不限|  
13 -|attribute_not|String|否|2|2|1: 取赠品 2:不取赠品,主动传空字符串表示不限| 3 +目前全球购和yoho商品在搜索引擎中的索引是不同的,分别是tplproduct 和productindex。由于productindex的字段远远多于tplproduct的字段,所以整个融合过程会分为几个阶段,循序渐进来完成2个商品共用一个索引。
  4 +
  5 + - 适配模式。通过开发适配器,把全球购的字段转化成yoho商品的字段,全球购商品更新到productindex中
  6 +
  7 +
  8 +### Version
  9 +1.0.0
  10 +
  11 +### tplproduct字段定义
  12 +字段 | 说明
  13 +-----|-----
  14 +product_skn|商品skn
  15 +product_name|商品名称
  16 +source|商品来源
  17 +brand_id|品牌id
  18 +sort_one|一级品类id
  19 +sort_two|二级品类id
  20 +sort_three|三级品类id
  21 +sort_four|四级品类id
  22 +product_url|商品网址
  23 +site_id|网站id
  24 +is_limited|是否是限量商品
  25 +country_id|国家编码
  26 +gender|性别 1.男 2.女 3.通用
  27 +currency_id|货币id
  28 +tag_price|吊牌价
  29 +orign_price|销售价(计算汇率后的)
  30 +sell_price|最小销售价
  31 +goods_price|最小商品价格(计算汇率后的)
  32 +got_price|最小到手价
  33 +weight|重量
  34 +size_info|尺码
  35 +status|商品状态
  36 +url_status|爬虫状态 1.生效 2.失效
  37 +stock_status|库存状态 1.有 2.无
  38 +operate_userid|操作人id
  39 +order|排序序列
  40 +create_time|创建时间
  41 +update_time|更新时间
  42 +shelf_time|上架时间
  43 +offshelf_time|定时下架时间
  44 +auto_shelf|是否自动上架 1.自动 2.手动
  45 +color_ids|skc颜色id组合 (1,2,3)
  46 +skc|skc的集合
  47 +cover|商品封面图
  48 +
  49 +### productindex字段定义
  50 +字段 | 定义 | NULL| Key|DEFAULT
  51 +-----|-----|-----|----|-----
  52 +id |int(11)| unsigned| NO | 0
  53 +product_id |int(11) |unsigned |NO | 0
  54 +shelve_time int(10)| unsigned |NO | 0
  55 +shelve_day |varchar(10)| YES |
  56 +cn_alphabet| varchar(255)| YES |
  57 +product_name| varchar(100) |YES |
  58 +brand_name_cn| varchar(50)| YES |
  59 +brand_name_en| varchar(100)| YES |
  60 +brand_keyword| varchar(200)| YES |
  61 +hot_keyword| varchar(100)| YES |
  62 +brand_name| varchar(50)| YES |
  63 +brand_alif| varchar(1)| YES |
  64 +style| varchar(200)| YES |
  65 +sales_phrase| varchar(100)| YES |
  66 +max_sort_id| smallint(5)| unsigned| NO| 0
  67 +max_sort_name| varchar(42)| YES |
  68 +max_sort| varchar(30) |YES |
  69 +middle_sort_id| smallint(5)| unsigned| NO | 0
  70 +middle_sort| varchar(30) |YES |
  71 +middle_sort_name| varchar(42)| YES |
  72 +small_sort_id| smallint(5) |unsigned| NO | 0
  73 +small_sort| varchar(30)| YES |
  74 +small_sort_name| varchar(42)| YES |
  75 +gender| enum('1','2','3')| YES |
  76 +gender_s| varchar(3)| YES |
  77 +brand_id| smallint(5)| unsigned| NO| 0
  78 +is_special| enum('Y','N')| YES | N|
  79 +status| tinyint(4)| NO | 0
  80 +seasons_s| int(0) |YES |
  81 +isspecial| int(1)| NO | 0|
  82 +is_hot |enum('Y','N')| YES | N|
  83 +folder_id| int(11) |YES | 0|
  84 +ishot| int(1)| NO | 0|
  85 +ispromotion| smallint(6)| NO | 0|
  86 +series_id| int(11)| unsigned| NO| 0|
  87 +is_sales| enum('Y','N')| YES | Y|
  88 +issales int(1)| NO ||| 0|
  89 +is_advance| enum('Y','N')| YES | N|
  90 +isadvance| int(1)| NO| 0||
  91 +is_auditing| enum('Y','N')| YES | Y||
  92 +isauditing| int(1)| NO | 0||
  93 +attribute| tinyint(4)| NO | |0|
  94 +seasons |set('spring','summer','autumn','winter','seasons')| YES |||
  95 +is_down| enum('Y','N')| YES | N||
  96 +isdown| int(1)| NO | 0||
  97 +isrecommend| int(1)| NO | 0|
  98 +is_outlets| int(1)| NO | 0|
  99 +first_shelve_time| int(10)| unsigned| YES | 0|
  100 +sell_channels| set('0','1','2','3','4','5','6','7','8','9')| YES | 0|
  101 +product_skn| int(11)| unsigned| NO |
  102 +isnew| varchar(1)| NO |
  103 +brand_domain| varchar(50) |YES |
  104 +islimited| varchar(1) |NO |
  105 +edit_time| int(10)| unsigned| NO | 0|
  106 +special_price| decimal(10,2)| YES | 0|
  107 +market_price| decimal(10,2)| YES | 0|
  108 +vip_discount_type| tinyint(4)| YES | 1|
  109 +vip_price |decimal(10,2)| YES | 0|
  110 +vip1_price| decimal(10,2)| YES | 0|
  111 +vip2_price| decimal(10,2)| YES | 0|
  112 +vip3_price |decimal(10,2)| YES | 0|
  113 +sales_price| decimal(10,2)| YES | 0|
  114 +promotion_discount_int| decimal(12,0)| YES |
  115 +promotion_discount| decimal(13,3)| YES |
  116 +specialoffer| varchar(1)| NO |
  117 +is_discount| varchar(1) |NO |
  118 +product_keyword| varchar(200)| YES |
  119 +color_ids |longtext |YES |
  120 +color_names |longtext| YES |
  121 +standard_ids |longtext |YES |
  122 +standard_names |longtext| YES |
  123 +standard_only_names |longtext |YES |
  124 +sales_num| decimal(33,0)| YES |
  125 +storage_num |decimal(33,0)| YES |
  126 +is_soon_sold_out| varchar(1) |NO |
  127 +is_sold_out| varchar(1)| NO |
  128 +sold_out| varchar(1)| NO |
  129 +size_ids |longtext| YES |
  130 +style_ids |longtext| YES |
  131 +goods_list| mediumtext |YES |
  132 +default_images| varchar(255)| YES |
  133 +activities |mediumtext |YES |
  134 +sort_weight| decimal(11,0)| NO | 0|
  135 +brand_weight| decimal(11,0)| NO | 0|
  136 +yohood_id| smallint(6)| YES |
  137 +base_pin_ratio |double| YES |
  138 +breaking_rate| double |YES |
  139 +discount_score| double |YES |
  140 +pool_id |longtext| YES |
14 141
15 -  
16 -请求示例  
17 -http://192.168.10.64:8080/yohosearch/sort_sizes.json?breaking=1&storage_num=1  
18 142
19 -### 响应  
20 -code为200即为成功且只会返回200,其他code表示失败。  
21 -响应JSON格式如下所示:  
22 -```json  
23 -{  
24 - "code": 200,  
25 - "message": "success",  
26 - "data": {  
27 - "total": 3,  
28 - "list": [  
29 - {  
30 - "small_sort_id": 119,  
31 - "middle_sort_id": 16,  
32 - "max_sort_id": 1,  
33 - "count": 2,  
34 - "sizes": [  
35 - {  
36 - "size_id": 203,  
37 - "size_name": "M"  
38 - },  
39 - {  
40 - "size_id": 271,  
41 - "size_name": "52"  
42 - }  
43 - ]  
44 - },  
45 - {  
46 - "small_sort_id": 114,  
47 - "middle_sort_id": 11,  
48 - "max_sort_id": 1,  
49 - "count": 5,  
50 - "sizes": [  
51 - {  
52 - "size_id": 201,  
53 - "size_name": "L"  
54 - },  
55 - {  
56 - "size_id": 203,  
57 - "size_name": "M"  
58 - },  
59 - {  
60 - "size_id": 211,  
61 - "size_name": "XL"  
62 - },  
63 - {  
64 - "size_id": 207,  
65 - "size_name": "S"  
66 - },  
67 - {  
68 - "size_id": 199,  
69 - "size_name": "F"  
70 - }  
71 - ]  
72 - },  
73 - {  
74 - "small_sort_id": 433,  
75 - "middle_sort_id": 429,  
76 - "max_sort_id": 365,  
77 - "count": 1,  
78 - "sizes": [  
79 - {  
80 - "size_id": 199,  
81 - "size_name": "F"  
82 - }  
83 - ]  
84 - }  
85 - ]  
86 - }  
87 -}  
88 -```  
89 143
  144 +### 适配器设计
  145 +1 全球购商品融合到productindex
90 146
91 -## 2、根据品类、库存、断码等获取商品列表(fix search.json的库存功能)##  
92 -(/sort_size_products.json)  
93 -请求方式:get  
94 -#### 请求参数  
95 -| 参数名称 | 参数类型 | 可否为空 | 示例 | 默认值 | 备注 |  
96 -|:-------| -----:|-----:|-----:|-----:|----:|  
97 -|storage_num|String|否|1|1|sku库存的最小值,不传默认1|  
98 -|breaking|String|否|1|为1|1:断码 0:非断码,不传默认1|  
99 -|sort|String|否|119|null|小分类id,以逗号隔开,不传默认空|  
100 -|size|String|否|203|null|尺码 Id,以逗号隔开,不传默认空|  
101 -|status|String|否|1|1|商品状态1:上架 非1:下架,不传默认为1| 147 +(1)适配器通过调用全球购的url+key获取全球购商品,参考:
  148 +```sh
  149 +wget ${tbl.product.url}getproductscountforsearch?client_type=iphone&client_secret=xx
  150 +```
  151 +其中xx为客户端key,需要进行md5的转化,转化如下:
  152 +```sh
  153 +clientkey= MD5Util.string2MD5("client_type=iphone&private_key=" + ${tbl.product.private.key});
  154 + ${tbl.product.url}:全球购url ,可以找周硕要
  155 +${tbl.product.private.key}:全球购产品密钥
  156 +```
  157 +(2)获取全球购产品后,需要参考yoho商品productindex 封装成商品list。
  158 +```sh
  159 +List<ProductIndex> globalProducts = ProductAdaprotr.changed(List<tplproduct>);
  160 +```
  161 +(3)搜索这边会每隔一段时间(默认间隔为1个小时)获取globalProducts,之后会进行product_index的更新,这样全球购商品就能在product_index里面搜索得到。
  162 +
  163 +2 yoho部分商品(部分品牌下的商品)融合到全球购索引
  164 +商品适配模块需要支持逆向适配,其中:
  165 +(1)部分brand品牌下的商品需要按照全球购的字段转成全球购商品列表。
  166 +可直接从yh_shops库product表中根据brand查到对应的product,然后按照全球购的字段转成全球购的商品列表
  167 +```sh
  168 +List<product> = XXservice.getProduct(String brandname);
  169 +List<tplproduct> yohoProducts = ProductAdaprotr.changedfromProductIndex(List<product>);
  170 +```
  171 +(2)全球购对着部分商品列表进行存储计算。
  172 +(3)搜索引擎会定时从全球购获取商品列表,并进行tplproduct更新的操作。
102 173
103 -|其他参数|||||同search.json的参数|  
104 174
105 175
106 -  
107 -请求示例  
108 -http://192.168.10.64:8080/yohosearch/sort_size_products.json?breaking=1&storage_num=1&sort=119&size=203  
109 176
110 -### 响应  
111 -code为200即为成功且只会返回200,其他code表示失败。  
112 -响应JSON格同search.json