String JARO_WINKLER将日期匹配为字符串
因此,我习惯使用jaro_winkler和其他工具来匹配客户提供的stings,并使用这些PCT在我们的数据库中查找客户,因为我们没有像其他大多数地方一样的密钥,比如SSN、SIN、CPF和类似的东西,我们无法向客户询问此信息,所以。。。问题是,我试图使用我以前使用的jaro_winkler函数,但是现在,让客户能够在他们的出生日期输入1个错误的输入,但是,现在坏的部分来了,取决于错误输入的处理,它不断改变结果,一旦客户输入错误的输入,我必须计算0.96作为预期结果。。。但是,正如你在下面看到的,根据我在哪里修改排版,它会不断给我不同的结果 将上一年的打字错误从60改为61String JARO_WINKLER将日期匹配为字符串,string,oracle,string-comparison,string-matching,jaro-winkler,String,Oracle,String Comparison,String Matching,Jaro Winkler,因此,我习惯使用jaro_winkler和其他工具来匹配客户提供的stings,并使用这些PCT在我们的数据库中查找客户,因为我们没有像其他大多数地方一样的密钥,比如SSN、SIN、CPF和类似的东西,我们无法向客户询问此信息,所以。。。问题是,我试图使用我以前使用的jaro_winkler函数,但是现在,让客户能够在他们的出生日期输入1个错误的输入,但是,现在坏的部分来了,取决于错误输入的处理,它不断改变结果,一旦客户输入错误的输入,我必须计算0.96作为预期结果。。。但是,正如你在下面看到的
从DUAL中选择UTL_MATCH.jaro_winkler('12/10/1961','12/10/1960')代码>
它给了我一个准确的评分,我期望是0.96
但使用不同的一天,同样是一个打字错误,正如你所看到的贝娄
从DUAL中选择UTL_MATCH.jaro_winkler('11/10/1960','12/10/1960')代码>
pct下降了很多,达到了0.873333
我试着结合了很多关于一个错误打字的不同变化,结果每次都会变化,这取决于我的数据集、处理方式和其他方面,所以,我想知道是否有办法将匹配设置得更为稳定,只是比较一下整个刺,然后根据整个刺给我结果,而不是根据处理和其他
另外,我尝试使用不同类型的遮罩,如YYYYMMDD和其他,到目前为止没有任何效果。Jaro Winkler似乎是一个糟糕的算法。我猜您可能希望使用utl\u匹配中的edit\u distance
或edit\u distance\u similarity
。Jaro Winkler优先考虑字符串的前导字符。@JustinCave嗨,Justin,事实上我也尝试过编辑距离,但是一旦我从不同的地方更改了一个打字错误,pct看起来就更奇怪了,但是我确实认为Jaro也是一个糟糕的算法,尽管我不明白。“12/10/1961”与“12/10/1960”、“12/11/1961”或“11/10/1961”之间的距离为1。这似乎正是你想要的。如果这不是你想要的,你能澄清你的问题吗?@JustinCave yeap,这是真的,但是'12/09/1961'和'12/10/1961'之间的距离等于2,因为客户在下拉列表中选择他们的月份,所以你根本不需要寻找字符串输入错误。因此,任何字符串匹配算法都是一种糟糕的方法。你可以取两个date
值(不是字符串),计算它们之间的间隔,然后求年、月和日的绝对值差之和。Jaro-Winkler似乎是一个糟糕的算法。我猜您可能希望使用utl\u匹配中的edit\u distance
或edit\u distance\u similarity
。Jaro Winkler优先考虑字符串的前导字符。@JustinCave嗨,Justin,事实上我也尝试过编辑距离,但是一旦我从不同的地方更改了一个打字错误,pct看起来就更奇怪了,但是我确实认为Jaro也是一个糟糕的算法,尽管我不明白。“12/10/1961”与“12/10/1960”、“12/11/1961”或“11/10/1961”之间的距离为1。这似乎正是你想要的。如果这不是你想要的,你能澄清你的问题吗?@JustinCave yeap,这是真的,但是'12/09/1961'和'12/10/1961'之间的距离等于2,因为客户在下拉列表中选择他们的月份,所以你根本不需要寻找字符串输入错误。因此,任何字符串匹配算法都是一种糟糕的方法。您可以获取两个date
值(非字符串),计算它们之间的间隔,然后将年、月和日的绝对值差相加。