语音匹配函数
Netezza Performance ServerSQL 语言支持两种语音匹配功能,您可以使用SoundExNYSIIS 或 Double Metaphone 算法将名称编码为语音表示。
通过对姓名进行语音编码,可以根据姓名的发音进行匹配,减少因拼写差异而可能造成的遗漏。 音素匹配函数不区分大小写;对于拼写相同但字母大小写不同的两个字符串,音素表示法是相同的。 这些函数仅支持 VARCHAR 和 CHAR 数据类型,特别是Latin9编码的 ASCII 子集。 这些函数忽略 ASCII 子集之外的任何字符。
SoundExNYSIIS
<varchar(6) value> = nysiis(<str_expr>)Soundex 是一种著名的音标算法,用于按英语发音为人名编制索引。 该函数使用纽约州身份识别和情报系统 (NYSIIS) 的 Soundex 变体将字符串转换为 Soundex 表示法。 返回值是最多六个字符的字符串,用于识别输入字符串的发音。 例如,函数 "nysiis('Washington')返回字符串 "wasang",而函数 "nysiis('brown')"返回值 "bran"。
双精度变音
<int4 value> = dbl_mp(<str_expr>)Double Metaphone 是另一种通过发音索引字符串的语音算法。 与 Soundex 类似,它使用一套不同的英语和交替发音规则。 该函数返回两个 4 个字符的字符串编码、一个主键和一个次键(或备用键),用于输入字符串的发音。 发音相似的单词共用关键字,尽管它们的长度和拼写可能各不相同。 例如,名称 "washington "的双元主键和辅助键分别是 "AXNK "和 "FXNK"。
为提高性能,"dbl_mp函数将 4 位字符键映射为 16 位数字,并返回一个包含 16 位主键和次键的 32 位复合值Netezza Performance Server类型int4)。 因此,函数 "dbl_mp('washington')返回值为 781598358。
您可以使用三个辅助函数(pri_mp、"sec_mp和 "score_mp)从返回值中以字符串形式提取主键和辅助键,并运行键比较以获得相关性评分。
主要隐喻
<varchar(4) value> = pri_mp(<int4 dbl_mp return value>)
该辅助函数获取调用 "dbl_mp函数返回的值,并返回相应的四字符主元音字符串。 例如,"pri_mp(781598358)返回主键 AXNK。
二级隐喻
<varchar(4) value> = sec_mp(<int4 dbl_mp return value>)
该辅助函数获取调用 "dbl_mp函数返回的值,并返回相应的四字符二级元音字符串。 例如,"sec_mp(781598358)返回二级键 FXNK。
分数隐喻
<varchar(4) value> = score_mp(<int4 dbl_mp value 1>, <int4 dbl_mp
value 1>, <int4 strong match value>, <int4 normal match value>,
<int4 minor match value>, <int4 no match value>)- 最强匹配
- 主键 (1) = 主键 (2)
- 正常比赛
- 辅助键 (1) = 主键 (2)
主键 (1) = 次键 (2)
- 最小匹配
- 辅助键 (1) = 辅助键 (2)
对于四个匹配值参数,可以指定 1、2、3 和 4(表示最强匹配、正常匹配、最小匹配或无匹配)。 您还可以使用 100、50、25 和 0 等加权值来返回更多分数,以获得更好的匹配结果。
score_mp(781598358,781596310,1,2,3,4)
函数返回值 1 表示最强匹配。
score_mp(781598358,1050031766,100,50,25,0)
函数返回值 50,表示正常匹配。