对比数据的粒度是按需求数据与对比数据表中的字段为对比参考
一个需求表对应一个对比表的所有字段的所有对比完成取值计算完成,表示一个取分周期完成
对比的整体形式分横向对比和纵向对比
-
横向对比表示不与其它已经有的数据做对比,只根据自身的属性配置计算分值
- 一般固定有几种属性的字段用横向对比,因数对比值是固定的
-
纵向对比是跟已经有的固定的一组数据之间做对比
-
这种对比分为两种类型
- 一种是关系到对比数据(比如数值类型取等)
- 一种是不关系到对比数据(比如数值类型取大)
两种对比方式也可以存在一个表中的不同字段
字段对比的类型分类
-
1数值型,2固定几种属性类型,3坐标型,4时间型
- 数值型有取大,取等,取小不同的权重方向
- 固定几种属性类型是设置固定字段类型相互对应的分值
- 坐标型类似数值型
- 时间型类似数值型
取值计算方式
- 一个完整的取值是计算一个表的所有配置过的字段计算出的分值和,满分设置为100分,计算方式是所有字段的权重*字段分值相加(所以每个表的所有字段的设置的权重和分值积的和要以满分100分为基准)
数据结构设计说明
-
匹配度涉及到要使用的表
- ysyc_property(字段属性配置表)
- type 属性标记
- sname 属性名称
- type_id 属性明细id
- type_name 属性明细名称
- ysyc_weight(匹配度权重计算配置表,跟据这个表的配置设置一个字段在计算分值时的计算方式,对于有固定属性的会从ysyc_property表里取出所有属性然后有后台配置时配置属性配属性的分值)
- table_name 表名
- fields字段名
- types 字段类型1数值型,2固定几种属性类型,3坐标型,4时间型
- jdata 字段固定属性json对比取分值数据
- weight 权重 按整数好计算
- infeed 默认是横向对比,1表示纵向(与其它所有数据)对比
- weight_direction 默认取相等,1取大,2取小
- ysyc_property(字段属性配置表)
-
使用说明
- 在application/common/service里的weight.php是计算权重的类,使用实实例化这个类__construct($pa, $pb, $table_name,$isinfeed=false)(传入的参数1一条记录查询对像(就是一条要用来对比的数据表的查询对象);2要匹配的数据集查询对象(就是用来做为被对比的我多个表的实例查询对象);3初始化对比的表名对应ysyc_weight表里的table_name值;4做为过滤标识值为true时只对比计算表里的所有纵向对比的记录)
- 固定值对比时要用到ysyc_property表,一个字段固定有多少个属性配置在这个表里。比如适用范围有A,B,C三种对应ysyc_property表里有3条记录对应有type_id属性明细id,type_name属性明细名称,sname属性名称.在后台会配置A对A=分值,A对B=分值,就是笛卡尔乘积的每一项的分值,计算时会跟据分值*权重取值.
-
使用流程
- 配置字段:在后台权重配置配置字段如果字段是固定属性类型的,在类型选择选项就要选择固定属性类型,后台会自动列出所有的属性对属性然后填对应分值就可以。
-
程序应用
- 所有的调用接口有/application/admin/controller/Weight.php现在有四种调用方式1.需求找匹配仓库,接口名getweight;2.仓库匹配需求,调用接口getweight2;3.为一个仓库需求匹配多个仓库 或 为一个仓库匹配多个仓库需求,调用接口getweight3;4.为一个厂房需求匹配多个厂房 或 为一个厂房需求匹配多个厂房,调用接口getweight4。
-
前台js调用接口说明
- js接口写在weight.js文件里
- js提供一个调用方法,方法名_weight
- 参数1是code码 1表示为一个仓房匹配一个仓库需求,2表示为一个仓库需求匹配一个仓库,3表示为一个仓库需求匹配多个仓库,4表示为一个厂房需求匹配多个厂房
- 第二个参数是一个回调用于对返回的数据进行页面渲染操作
-
使用时注意问题
-
在设置字段的分值时要计算好所有要设置的字段的分值*权重相加为100分,因为每个表的满为100分,这个对比才准确。
-
-
对比方式
-
需求对库房
- 一个需求对多个厂房(需求字段跟厂房字段不一样)
-
库房对需求
- 一个厂房对多个需求(厂房字段跟需求字段不一样)
-