数据走了一大圈转换成标签,自然还是要回归到业务层面,通过对标签数据的用户的分析,可以进行精准营销,和智能推荐等相关操作,电商应用中可以提高成交量,信息流中可以更好的吸引用户。
应用层
把上述业务开发成服务,集成到具有的应用层面,不断提升应用服务的质量,不断的吸引用户,提供服务。当然用户的数据不断在应用层面产生,在转到数据采集服务中,最终形成完整的闭环流程。
3、应用案例从流程和业务层面描述都是简单的,到开发层面都会变得复杂和不好处理,这可能就是产品和开发之间的隔阂。
标签的数据类型
不同标签的分析结果需要用不同的数据类型描述,在标签体系中,常用描述标签的数据类型如下:枚举、数值、日期、布尔、文本类型。不同的类型需要不一样的分析流程。
商品和标签
这里提供一个基础案例,用商品的标签来分析商品,例如通过商品产地,价格,状态等条件,来查询产品库有多少符合条件的商品。
数据表设计
主要分四张表:标签分类,标签库,标签值,标签数据。
CREATE TABLE `tc_tag_catalog` ( `id` INT (11) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `catalog_name` VARCHAR (50) NOT NULL DEFAULT '' COMMENT '名称', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `state` INT (1) DEFAULT '1' COMMENT '状态1启用,2禁用', PRIMARY KEY (`id`) ) ENGINE = INNODB DEFAULT CHARSET = utf8 COMMENT = '标签层级目录'; CREATE TABLE `tc_tag_cloud` ( `id` INT (11) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `catalog_id` INT (11) NOT NULL COMMENT '目录ID', `tag_name` VARCHAR (100) DEFAULT '' COMMENT '标签名称', `tag_code` INT (11) DEFAULT NULL COMMENT '标签编码', `bind_column` VARCHAR (100) DEFAULT '' COMMENT '绑定数据列', `data_type` INT (2) NOT NULL COMMENT '1枚举,2数值,3日期,4布尔,5值类型', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `remark` VARCHAR (150) DEFAULT NULL COMMENT '备注', `state` INT (1) DEFAULT '1' COMMENT '状态1启用,2禁用', PRIMARY KEY (`id`) ) ENGINE = INNODB DEFAULT CHARSET = utf8 COMMENT = '标签云'; CREATE TABLE `tc_tag_data_enum` ( `tag_code` INT (11) NOT NULL COMMENT '标签编码', `data_value` VARCHAR (150) NOT NULL COMMENT '枚举值', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', KEY `tag_code_index` (`tag_code`) USING BTREE ) ENGINE = INNODB DEFAULT CHARSET = utf8 COMMENT = '标签枚举值'; CREATE TABLE `tc_tag_data_set` ( `id` INT (11) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `product_name` VARCHAR (100) DEFAULT '' COMMENT '商品名称', `unit_price` DECIMAL (10, 2) DEFAULT '0.00' COMMENT '单价', `is_shelves` INT (1) DEFAULT '1' COMMENT '是否上架:1否,2是', `origin_place` VARCHAR (100) DEFAULT '' COMMENT '产地', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`) ) ENGINE = INNODB DEFAULT CHARSET = utf8 COMMENT = '标签数据集';模拟入参接口
这里的参数应该是基于需求,动态选取,进行组织到一起:
例如图片中这里给定的标签值列表,称为枚举值。
@RestController public class AnalyzeController { @Resource private TagDataSetService tagDataSetService ; @GetMapping("/analyze") public String analyze (){ List<TagParam> tagParamList = new ArrayList<>() ; TagParam tagParam1 = new TagParam(1,"产地","origin_place") ; List<String> valueList1 = new ArrayList<>() ; valueList1.add("深圳"); valueList1.add("广东"); tagParam1.setValueList(valueList1); tagParamList.add(tagParam1) ; TagParam tagParam2 = new TagParam(2,"价格","unit_price") ; List<String> valueList2 = new ArrayList<>() ; valueList2.add("1999"); tagParam2.setValueList(valueList2); tagParamList.add(tagParam2) ; TagParam tagParam3 = new TagParam(3,"生产日期","create_time") ; List<String> valueList3 = new ArrayList<>() ; valueList3.add("2020-05-01 13:43:54"); tagParam3.setValueList(valueList3); tagParamList.add(tagParam3) ; TagParam tagParam4 = new TagParam(4,"是否上架","is_shelves") ; List<String> valueList4 = new ArrayList<>() ; valueList4.add("1"); tagParam4.setValueList(valueList4); tagParamList.add(tagParam4) ; TagParam tagParam5 = new TagParam(5,"产品名称","product_name") ; List<String> valueList5 = new ArrayList<>() ; valueList5.add("智能"); tagParam5.setValueList(valueList5); tagParamList.add(tagParam5) ; Integer count = tagDataSetService.analyze(tagParamList) ; return "Result:" + count ; } }参数解析查询