Authored by henry

test

## 1、全球购yoho商品搜索引擎融合方案##
# 全球购Yoho商品搜索引擎融合方案
(/sort_sizes.json)
请求方式:get
#### 请求参数
| 参数名称 | 参数类型 | 可否为空 | 示例 | 默认值 | 备注 |
|:-------| -----:|-----:|-----:|-----:|----:|
|breaking|String|否|1|1|1:断码 0:非断码,传空字符串则表示不限|
|storage_num|String|否|1|1|sku库存的最小值|
|sort|String|否|119|null|小分类id,以逗号隔开|
|size|String|否|203|null|尺码 Id,以逗号隔开|
|productStatus|String|否|1|1|商品状态1:上架 非1:下架,主动传空字符串表示不限|
|attribute_not|String|否|2|2|1: 取赠品 2:不取赠品,主动传空字符串表示不限|
目前全球购和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 |
请求示例
http://192.168.10.64:8080/yohosearch/sort_sizes.json?breaking=1&storage_num=1
### 响应
code为200即为成功且只会返回200,其他code表示失败。
响应JSON格式如下所示:
```json
{
"code": 200,
"message": "success",
"data": {
"total": 3,
"list": [
{
"small_sort_id": 119,
"middle_sort_id": 16,
"max_sort_id": 1,
"count": 2,
"sizes": [
{
"size_id": 203,
"size_name": "M"
},
{
"size_id": 271,
"size_name": "52"
}
]
},
{
"small_sort_id": 114,
"middle_sort_id": 11,
"max_sort_id": 1,
"count": 5,
"sizes": [
{
"size_id": 201,
"size_name": "L"
},
{
"size_id": 203,
"size_name": "M"
},
{
"size_id": 211,
"size_name": "XL"
},
{
"size_id": 207,
"size_name": "S"
},
{
"size_id": 199,
"size_name": "F"
}
]
},
{
"small_sort_id": 433,
"middle_sort_id": 429,
"max_sort_id": 365,
"count": 1,
"sizes": [
{
"size_id": 199,
"size_name": "F"
}
]
}
]
}
}
```
### 适配器设计
1 全球购商品融合到productindex
## 2、根据品类、库存、断码等获取商品列表(fix search.json的库存功能)##
(/sort_size_products.json)
请求方式:get
#### 请求参数
| 参数名称 | 参数类型 | 可否为空 | 示例 | 默认值 | 备注 |
|:-------| -----:|-----:|-----:|-----:|----:|
|storage_num|String|否|1|1|sku库存的最小值,不传默认1|
|breaking|String|否|1|为1|1:断码 0:非断码,不传默认1|
|sort|String|否|119|null|小分类id,以逗号隔开,不传默认空|
|size|String|否|203|null|尺码 Id,以逗号隔开,不传默认空|
|status|String|否|1|1|商品状态1:上架 非1:下架,不传默认为1|
(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更新的操作。
|其他参数|||||同search.json的参数|
请求示例
http://192.168.10.64:8080/yohosearch/sort_size_products.json?breaking=1&storage_num=1&sort=119&size=203
### 响应
code为200即为成功且只会返回200,其他code表示失败。
响应JSON格同search.json
... ...