我有一個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