2015-09-04 74 views
0

我正在寫一些東西,允許您發佈一些不需要註冊的博客文章等長表單內容。我想檢測一個帖子是否重複。要清楚的是,它不一定非常完美,只要捕捉像垃圾郵件發送者或錯誤等前端代碼失敗並且用戶發送兩個請求來創建帖子或其他東西的明顯誘惑即可。檢測到重複帖子

我最初的想法是刪除特殊字符,空格,和一些常見的詞,如和,但等,然後md5它。然後,我可以在數據庫中存儲「duplicate_hash」或其他內容。

然後,當你去發佈它會做一個查詢在數據庫中的唯一散列。如果發現散列,你會得到一個重複的錯誤。

這會工作得很好還是有更好的想法呢?我們正在使用節點和MySQL,如果碰巧有任何特定的工具已經出來,我沒有找到。

+0

像這樣使用像md5一樣的問題是,即使相同的輸入始終會產生相同的輸出(散列),兩個非常相似的短語會帶來完全不同的散列。 – Drown

+0

@Charles如果有人在某處使用不同的短語,就像我剛纔提到的那樣,我並不在意這一點。試圖捕捉明顯的重複。即「貓很快」vs「那隻貓很快」可以通過。我的使用案例是發佈相同帖子和人員重複發佈的機器人(意外) –

回答

1

如果您的目標是阻止某人點擊刷新或返回按鈕進行雙重提交,那麼這些消息將完全相同,因此這是簡單的匹配。

如果你的目標是防止垃圾郵件,那麼消息的MD5散列可能是特定的,因爲簡單地改變一個字符會產生不同的散列。

如果你想堅持使用md5散列,你可以只散列一大堆消息,比如從100個字符到500個字符。或小寫的一切,刪除像你說的常見詞,選擇前25或50個單詞然後散列。