我有一个具有 (user_id, name) 的 SQLite 数据库。我想通过名称检测用户是否已经在系统中。问题在于该名称来自用户,这意味着他可能拼错该名称,或者它可能是该名称的替代版本:“Tim”与“Timothy”。所以我想要一个函数,它可以找到与输入最接近的匹配项,并给出相似度的置信度来确定是否存在匹配项。置信度应该在 0 到 1 之间(这样我就可以设置一个有意义的截止值)。
桌子:
1 | 蒂姆·贝斯特 2 | 罗杰·托马斯 3 | 罗珀酒吧
- 如果用户输入
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 解决方案。