2015-04-17 50 views
2

我對重定向的人一起工作,如果他們鍵入「不是真的錯了網址」。如何根據SQL中的字符相似性比較字符串?

比如我有一個很好的URL http://www.website.com/category/foo-bar-if-bar-foo/。 這個工程,所以如果用戶用它進入我的網站,我可以檢索相應的文章。

但是,如果有人進入我的網站有沒有真正錯誤的URL像http://www.website.com/category/foo-bar-foo/,因爲其他網站引用了一個錯誤的URL,我要他重定向到合適的人,而不是有一個404個狀態碼...

那麼我應該怎麼做?最重要的是,我應該這樣做嗎?

我實際上Laravel 4.2使用侃侃而談。

預先感謝您。

編輯

我錯計算器,感謝您的評論。它使用帖子的唯一ID。

EDIT 2

我在SOUNDEX功能SQL來看,它真的好,如果有喜歡的字符或兩個缺少的一個小的差異。但是,如果我的網址和我的例子一樣壞了,那麼顯然它不再工作。但是,謝謝這將是有用的。

+1

這是因爲StackOverflow的使用數量('29695569'在你的例子)作爲查找一個唯一的標識符,並且不真正關心的URL在所有的文本字符串的一部分....這只是有搜索引擎優化 –

+0

好吧,這是一個點! – KeizerBridge

+2

這裏的魔術詞是「模糊搜索」。退房'SOUNDEX()'在MySQL功能(https://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_soundex) – prehfeldt

回答

3

只是在想我的頭頂部,你可以創建一個包含所有路徑的SQL表(使用全文索引啓用)(它可能已經存在)。

如果404被觸發,劫持並執行MATCH(全文搜索)並返回得分最高的路徑MATCH(您也可以考慮使用分數閾值來防止無意義的匹配)。