SORTWORDS( ) 函数
返回一个字符串,并且将各个单词按顺序排序。
语法
SORTWORDS(string)
参数
| 名称 | 类型 | 描述 |
|---|---|---|
| 字符串 | 字符 |
包含要排序的单词的字符串或者表达式。 “单词”是任意字符或者由空格分隔的字符构成的字符组:
单词之间的多个空格被自动转换为单个空格。前导或者曳尾空格被自动除去。 |
输出
字符。
示例
基本示例
字面量字符输入
返回 "1 2 A Z a z"(非 Unicode Analytics):
SORTWORDS("Z a 2 z A 1")
返回 "1 2 a A z Z" (Unicode Analytics):
SORTWORDS("Z a 2 z A 1")
返回 "1 2 A A Z Z":
SORTWORDS(UPPER("Z a 2 z A 1"))
返回 "CA, FL NY, TX,":
SORTWORDS("CA, TX, NY, FL")
返回 "CA FL NY TX":
SORTWORDS(OMIT("CA, TX, NY, FL", ","))
域输入
返回 Vendor_Address 域中的所有值,并且将地址元素按顺序排序:
SORTWORDS(Vendor_Address)
高级示例
对地址元素进行排序以改善模糊重复匹配
在 Analytics 中执行各种模糊匹配时,可以使用 SORTWORDS( ) 作为辅助类函数。
SORTWORDS( ) 对编辑距离的影响
首先,让我们考察一下同一个地址的两个格式不同的实例之间的编辑距离。
在不使用 SORTWORDS( ) 函数的情况下,返回的编辑距离是 22。如此大的编辑距离暗示这两个字符串不是同一个地址:
LEVDIST("125 SW 39TH ST, Suite 100", "Suite 100, 125 SW 39TH ST")
现在,让我们添加 SORTWORDS( ) 函数。返回的编辑距离是 2,该值要低得多,它暗示这两个字符串是同一个地址。
LEVDIST(SORTWORDS("125 SW 39TH ST, Suite 100"), SORTWORDS("Suite 100, 125 SW 39TH ST"))
隔离 "125 SW 39TH ST, Suite 100" 的模糊重复值
创建一个过滤器,以便隔离 Vendor_Address 域中所有位于 "125 SW 39TH ST, Suite 100" 的指定编辑距离内的值:
SET FILTER TO LEVDIST(SORTWORDS(Vendor_Address), SORTWORDS("125 SW 39TH ST, Suite 100"), F) < 3SET FILTER TO ISFUZZYDUP(SORTWORDS(Vendor_Address), SORTWORDS("125 SW 39TH ST, Suite 100"), 3, 99)
增加或者减少表达式 (3) 中的编辑距离使您可以调整过滤值中的差异度。
有关编辑距离的详细信息,请参见LEVDIST( ) 函数。
备注
概览视频
要观看提供该函数概览的视频,请参见使用 SORTWORDS( ) 进行模糊匹配(仅限英语)。
SORTWORDS( ) 所使用的排序顺序
The SORTWORDS( ) 函数使用排序顺序选项(工具 > 选项 > 表)中指定的任何排序顺序。默认排序顺序如下所示。
有关详细信息,请参见“排序顺序”选项和排序顺序。
|
Analytics 版本 |
默认排序顺序 |
关联排序顺序 |
|---|---|---|
|
非 Unicode |
系统默认 (ASCII) |
先是数字,再是大写字母,然后是小写字母: 0, 1, 2... A, B, C... a, b, c... 例如,“Z”排在“a”之前。 |
|
Unicode |
混合语言 (UCA) (Unicode 排序算法) |
先是数字,然后是小写字母和大写字母相互混合: 0, 1, 2... a, A, b, B, c, C... 例如,“a”排在“Z”之前。 |
区分大小写
SORTWORDS( ) 区分大小写。根据您使用的 Analytics 的版本的不同(非 Unicode 或者 Unicode),字符串中的大小写可能影响排序。
如果您不希望大小写影响排序,您可以将 UPPER( ) 函数与 SORTWORDS( ) 结合使用:
SORTWORDS(UPPER("字符串"))
SORTWORDS( ) 可以改善模糊匹配
SORTWORDS( ) 可以提高使用模糊匹配函数的模糊匹配命令、过滤器或条件的有效性:
注意
如果您将 SORTWORDS( ) 与任何模糊匹配命令或者函数结合使用,则必须将 SORTWORDS( ) 同时应用于要比较的两个字符串或两个域。将该函数仅应用于两个字符串或者域之一可能严重恶化模糊匹配的结果。
编辑距离算法
在与基于编辑距离算法的命令和函数一起使用时,SORTWORDS( ) 尤其有用,当两个字符串中的相同或类似元素位于不同的位置时,该算法可返回更高的差异值。通过首先对元素进行排序,您可以显著减小编辑距离算法返回的差异值。结果集具有更少的误报和更多的真正报告。
Dice 系数算法
在与基于 Dice 系数算法的命令和函数一起使用时,SORTWORDS( ) 可能是有用的。但是,这并不总是能够提高有效性。按照设计,Dice 系数算法可以最大程度地减小元素位置的重要性,因此,对元素进行排序所产生的影响要比编辑距离算法小。
根据数据性质的不同,SORTWORDS( ) 可能会导致 Dice 系数算法返回更低的分数,从而实际上降低有效性。在决定是否在生产设置中将 SORTWORDS( ) 与 Dice 系数算法结合使用之前,请对一组样本数据进行测试。
第二个考虑是当 Dice 系数 n 元语法长度较短时,使用 SORTWORDS( ) 的好处更小一些。随着您减小 n 元语法长度,Dice 系数算法会进一步最大程度地减小元素位置的重要性。