Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String JARO_WINKLER将日期匹配为字符串_String_Oracle_String Comparison_String Matching_Jaro Winkler - Fatal编程技术网

String JARO_WINKLER将日期匹配为字符串

String 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作为预期结果。。。但是,正如你在下面看到的

因此,我习惯使用jaro_winkler和其他工具来匹配客户提供的stings,并使用这些PCT在我们的数据库中查找客户,因为我们没有像其他大多数地方一样的密钥,比如SSN、SIN、CPF和类似的东西,我们无法向客户询问此信息,所以。。。问题是,我试图使用我以前使用的jaro_winkler函数,但是现在,让客户能够在他们的出生日期输入1个错误的输入,但是,现在坏的部分来了,取决于错误输入的处理,它不断改变结果,一旦客户输入错误的输入,我必须计算0.96作为预期结果。。。但是,正如你在下面看到的,根据我在哪里修改排版,它会不断给我不同的结果

将上一年的打字错误从60改为61

从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
值(非字符串),计算它们之间的间隔,然后将年、月和日的绝对值差相加。