在Rails中,我傳入一個字符串:'AE18BX21'。我正在查詢數據庫以查找與輸入字符串匹配的字符串。但是輸入字符串和數據庫中的字符串有時不匹配。有時會有一個額外的字母/數字,有時會丟失一個字母/數字,或者有時字母/數字是不同的字母/數字。如何匹配字符串與另一個幾乎相同的字符串(模糊匹配)
我已經嘗試了一些不同的正則表達式,如:
Table.where("string =~ ?", 'A+E+1+8+B+X+2+1')
Table.where("string =~ ?", '(A|.)+(E|.)+(1|.)+(8|.)+(B|.)+(X|.)+(2|.)+(1|.)')
在一個理想的世界,我希望它僅返回匹配80%
以上的字符串。
我認爲你正在尋找類似Levenshtein距離,但不知道你正在使用什麼數據庫引擎,以及它是否支持它。與你的第一個正則表達式有關,你可以嘗試:'Table.where(「string =〜?」,'A * E * 1 * 8 * B * X * 2 * 1 *')' –
是的,我沒有想過Levenshtein距離。我正在使用PostgresSQL。我檢查一下。 – cal1801