GlobalYoho_product_search.md
6.21 KB
全球购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获取全球购商品,参考:
wget ${tbl.product.url}getproductscountforsearch?client_type=iphone&client_secret=xx
其中xx为客户端key,需要进行md5的转化,转化如下:
clientkey= MD5Util.string2MD5("client_type=iphone&private_key=" + ${tbl.product.private.key});
${tbl.product.url}:全球购url ,可以找周硕要
${tbl.product.private.key}:全球购产品密钥
(2)获取全球购产品后,需要参考yoho商品productindex 封装成商品list。
List<ProductIndex> globalProducts = ProductAdaprotr.changed(List<tplproduct>);
(3)搜索这边会每隔一段时间(默认间隔为1个小时)获取globalProducts,之后会进行product_index的更新,这样全球购商品就能在product_index里面搜索得到。
2 yoho部分商品(部分品牌下的商品)融合到全球购索引 商品适配模块需要支持逆向适配,其中: (1)部分brand品牌下的商品需要按照全球购的字段转成全球购商品列表。 可直接从yh_shops库product表中根据brand查到对应的product,然后按照全球购的字段转成全球购的商品列表
List<product> = XXservice.getProduct(String brandname);
List<tplproduct> yohoProducts = ProductAdaprotr.changedfromProductIndex(List<product>);
(2)全球购对着部分商品列表进行存储计算。 (3)搜索引擎会定时从全球购获取商品列表,并进行tplproduct更新的操作。