我在mysql中有一个数据库,它有一组属性(例如' weight',' height',' no of pages'等)和属性价值(例如' 30吨' 12英寸',' 2 pgs'等)并与相应的产品ID进行映射。 数据来自不同的网站,因此属性值有不同的格式(例如' 222 pgs'或' 222页'或' 222')(ex2 。' 12英寸' 12米' 12 cms')。 我需要做的是我必须比较不同产品的相同属性的值。所以我必须比较' 222 pgs'用' 222页'对于格式不同的所有属性。
大约有4000个属性,而且数量会进一步增加。有没有办法比较这些,而无需单独为每个属性分配特定类型?或者比较这些的最快方法是什么?
答案 0 :(得分:0)
好吧,在他们发明透视计算机之前,人类将不得不告诉它pgs
和pages
意味着相同的事情inches
和meters
是转换。
您必须以这种或那种方式清理数据。我可能首先确定每个单元测量相同维度 1 和常见别名 2 的单位,然后解析数据以从单位拆分数量并标准化< sup> 3 单位。完成后,数据将直接具有可比性。
但是,如果数据库设计得当,那么所有这些只是解决问题的一个补救办法,而这个问题本来就不应该存在。
1 “质量”是以kg
,t
,lb
等单位衡量的维度。“长度”是由m
,km
,in
等衡量的维度
2 例如in
和inch
表示完全相同的单位,pgs
和pages
相同等。
3 I.e.确保特定维度始终由同一单位表示:例如,将所有长度转换为m
,将所有质量转换为kg
,将所有页面转换为pages
等。
答案 1 :(得分:0)
在您发现一对产品的属性不同(但仍然意味着相同的事情)之后,您还没有解释您想要做什么。
I.e。:如果我在实例A中看到字段长度设置为“12 pgs”而实例B有长度报告“12页”你做什么? 列出这个?自动更正?删除两个值中的一个?打开一个供人类用户更正的窗口?
就个人而言,我会选择“选择属性,从属性中按X组计数(*)”,以便您可以找到该单元最常见的拼写,然后您还可以编写可以自动转换的更正脚本一旦你确定了正确的表示,就会“.. pgs”到“pages”。
当然,除非您强制执行单元的正确拼写,否则这将无济于事,这需要确保更好的输入输出过滤器,包括主UI,以及您可能用于创建的任何类型的批量上传器实用程序或更新产品。
重新设计数据库以将“单位”添加为每个度量的额外分类属性也会有很大帮助。