快速的方法來搜索基於非字面比較快速路
我開發過相當大的數據集一個小的搜索,基本上所有字符串。表格字段之間的關係很簡單,儘管比較不一定是字面的。即它應該能夠關聯「filippo」,「philippo」,「filipo」等等。
我已經找到了一些方法就可以完成,非常頻繁絆倒在Levinstein距離(this,here和here),雖然我不知道這是對我的具體情況的切實可行的。
簡而言之,我有兩個表格,一個是帶有「搜索鍵」的小表格,另一個是應該執行搜索的更大的表格。兩個表都有相同的字段,它們都具有相同的「含義」。例如。
KEYS_TABLE
# | NAME | MIDNAME | SURNAME | ADDRESS | PHONE
1 | John | Fake | Doe | Sesame St. | 333-12-32
2 | Ralph | Stue | Michel | Bart. Ghost St. | 778-13000
...
和
SEARCH_TABLE
# | NAME | MIDNAME | SURNAME | ADDRESS | PHONE
...
532 | Jhon | F. | Doe | Sesame Street | 3331232
...
999 | Richard | Dalas | Doe | Sesame St. | 333-12-32
所有我想要做的是操作系統獲得某種度量或排名爲每個給定的紀錄KEYS_TABLE
,報告從SEARCH_TABLE
超過一定關聯的所有記錄(定義或者通過度量或者簡單的一些「KNN」類似的方法)。
我說萊文斯坦距離可能不實際,因爲它需要計算每行中的每個字段在KEYS_TABLE
x SEARCH_TABLE
。考慮到SEARCH_TABLE
有大約4億條記錄,KEYS_TABLE
從100k到1mil不等,結果數量太大。
我希望有一些方法可以預先豐富這兩個表格,或者一些更簡單(更便宜)的方式來執行搜索。
值得一提的是,我被允許隨意轉換數據。例如將St.
標準化爲st
,Street
至st
,刪除特殊字符等。
我的選擇是什麼?