更新:我现在为 ssdeep C API 编写了一个名为php_ssdeep的 PHP 扩展,以促进 PHP 中的模糊散列和散列比较。更多信息可以在我的博客上找到。我希望这对人们有所帮助。
我参与在 Linux 机器上用 PHP 编写自定义文档管理应用程序,该应用程序将存储各种文件格式(可能有 1000 个文件),我们需要能够检查之前是否已上传文本文档以防止数据库中的重复.
本质上,当用户上传一个新文件时,我们希望能够向他们展示一个重复文件或包含类似内容的文件列表。这将允许他们选择一个预先存在的文件或继续上传他们自己的文件。
类似的文档将通过查看其内容中的类似句子以及可能动态生成的关键字列表来确定。然后,我们可以向用户显示匹配百分比,以帮助他们找到重复项。
您能否推荐任何用于此过程的软件包以及您过去可能如何完成此操作的任何想法?
我认为可以通过获取所有文本内容和
- 剥离空白
- 删除标点符号
- 转换为小写或大写
然后形成一个 MD5 散列来与任何新文档进行比较。例如,如果用户编辑文档以添加额外的段落分隔符,则删除这些项目应该有助于防止找不到重复项。有什么想法吗?
这个过程也可能作为夜间作业运行,如果计算要求太大而无法实时运行,我们可以在用户下次登录时通知用户任何重复项。然而,实时将是首选。