我有一个SQLite数据库(user_id,name)。我想通过名称来检测用户是否已经在系统中。问题在于名称来自用户,意思是他可以拼错名字,或者可能是名称的替代版本:“Tim”和“Timothy”。所以我想要一个能够找到最接近输入的函数,并给出一个相似性的置信度,以确定是否存在匹配。信心应该在0到1之间(这样我才能设置一个有意义的截止点)。通过模糊匹配检测重名
表:
1 | Tim Best 2 | Roger Thomas 3 | Roper Bar
- 如果用户输入
Timothy Bert
函数应该返回1 | Tim Best | 0.8
(0.8是信心,如果这是它正好是)。 - 如果用户输入
Roper Thomas
函数应该返回2 | Roger Thomas | 0.6
- 如果用户输入
Tim Taylor
函数应该返回1 | Tim Best | 0.3
- 如果用户输入
Foo Taylor
函数应该返回2 | Roper Thomas | 0.0
理想情况下是最好的如果我可以在SQLite中编写查询来做到这一点,但如果这是不可能的,我也会采取AC解决方案。
在最后一个例子中,为什么与'Foo Taylor'最匹配的是'Tim Best'而不是'Roger Thomas'? (“泰勒”和“托马斯”开始用相同的字母,并具有相同的长度,这似乎不是什么“蒂姆最佳”显然率更好的匹配。) –
@TedHopp你是正确的,对不起 – chacham15