我在建一个网站。用户可以提交"Title“,它是unicode字符串(不仅仅是英文)。
当用户提交“标题”时,我想看看它是否已经在数据库中(MySQL)。如果是,我只需要更新现有的记录。如果它是一个新的“标题”,我会为它创建一个新的记录。
我想测试唯一性的标准方法是在"Title“列上创建一个索引。但我担心这样的索引的大小,因为"Title“可能会很长。
所以我想知道是否有一种方法可以创建"Title“的”签名“,并使用它来测试唯一性?是否有一些散列函数可以将unicode字符串散列为唯一的值?
任何指针都将非常感谢。谢谢。
发布于 2011-03-23 17:34:30
简单的答案是使用一个MySql散列函数(MD5 SHA1)来创建每个标题的散列,并将其与标题本身一起存储。
然后,您可以对散列值进行索引,这将产生更好、更快的索引。
这些基本上都是加密函数,会占用大量的cpu,但是您的语言环境可能会提供一个更简单、更快的散列,比如crc32。
这也值得把你的“标题”通过清理后再散列ie。将多个空格强制转换为一个空格,将所有字符折叠为小写,删除标点符号etc.etc。
所以"STACKOVERLOW很棒......“和"stackoverflow是伟大的“导致相同的散列。
https://stackoverflow.com/questions/5403015
复制相似问题