I like the suggestions above, but offer (in the spirit of TIMTOWTDI) two alternative solutions:
When someone posts, an MD5 checksum is created. We then compare MD5 sums across the database. If something comes up, we ask "is this a duplicate?".
Dipping further into the bucket of infinite cycles, how about using String::Approx to check for similarities. This could just be compared to your own posts. On the other hand maybe the amount of allowable approx should be tighter for one's own posts.
Gee I love having infinte cycles. <grin>