1
我有一個有數百萬行的表。現在,當用戶在從表格中搜索字符串或單詞時出現任何拼寫錯誤時,我想從表格推薦用戶正確的單詞或字符串。我使用jaro-winkler算法來比較字符串的距離,但是由於我的數據庫非常龐大,我的查詢花了很多時間來執行。在應用jaro-winkler算法之前,我將如何最小化數據。在大型數據庫上搜索推薦/建議
有沒有其他更好的方法,我可以通過它從大表快速搜索建議。
我想建立類似的搜索,如谷歌搜索沒有自動建議。我正在使用我的sql數據庫。
請建議。
嘿,謝謝你的回覆。你的建議正在爲某些場景工作。如果我的表格有關鍵字「lisa」和「lake」,那麼兩個關鍵字的soundex都是相同的,所以如果我將它與「leke」的soundex進行比較,那麼我將這兩個關鍵字都作爲輸出,因爲我有很多類似的詞我沒有得到完美的匹配。 Jaro Winkler將「leke」和「lake」的距離縮小到「leke」和「lisa」。所以我猜jaro winkler對我來說是更合適的選擇。唯一值得關注的是Jaro需要的時間 - 溫克勒需要很多時間,我需要縮短這個時間。 – JP711
@ user5396801 - 您所需要做的就是使用JW距離函數處理您的soundex查詢的結果,以獲得最終輸出。 Sundex會將巨大的桌子揀到一個可管理的尺寸,這樣你就可以在剩下的東西上使用昂貴的算法。 –
這是一個非常好的選擇。我會嘗試,我猜99%它會工作得很快。但是我發現了兩個關鍵字的另一個問題。 「水印」和「水手」。 「水印」存在於數據庫中,但如果用戶輸入「水手」,理想情況下我應該建議「水印」,因爲根據JW,兩者的距離都接近97%。但「水印」的索引是W36562,「水手」是「W365」,因此它不符合它。 – JP711