更新: 我现在编写了一个名为php_ssdeep的PHP扩展,用于ssdeep C API,以便在PHP中本地实现模糊哈希和哈希比较。更多信息可以在我的博客上找到。希望对大家有所帮助。
我参与编写一个在Linux服务器上使用PHP编写的自定义文档管理应用程序,它将存储各种文件格式(可能有数千个文件),我们需要能够检查是否已经上传过文本文档,以防止在数据库中出现重复。
基本上,当用户上传新文件时,我们希望能够向他们呈现一份文件列表,其中包含重复或包含类似内容的文件。然后,这将允许他们选择预先存在的文档之一或继续上传自己的文档。
通过查找其内容中的相似句子和可能动态生成的关键字列表来确定类似的文档。然后,我们可以向用户显示匹配百分比,以帮助他们找到重复项。
我参与编写一个在Linux服务器上使用PHP编写的自定义文档管理应用程序,它将存储各种文件格式(可能有数千个文件),我们需要能够检查是否已经上传过文本文档,以防止在数据库中出现重复。
基本上,当用户上传新文件时,我们希望能够向他们呈现一份文件列表,其中包含重复或包含类似内容的文件。然后,这将允许他们选择预先存在的文档之一或继续上传自己的文档。
通过查找其内容中的相似句子和可能动态生成的关键字列表来确定类似的文档。然后,我们可以向用户显示匹配百分比,以帮助他们找到重复项。
你能推荐一些与此过程相关的包吗?你过去是如何完成这个任务的?
我认为直接的重复可以通过获取所有文本内容并执行以下步骤来完成:
- 去除空格
- 去除标点符号
- 转换为小写或大写
然后形成一个MD5哈希值,以便与任何新文档进行比较。去除这些项目应该有助于防止找不到重复项,例如如果用户编辑文档以添加额外的段落分隔符。 有什么想法吗?
如果计算要求过大而无法实时运行,则此过程还可以潜在地作为每晚的任务运行,并且我们可以在用户下次登录时通知其任何重复项。但是实时运行会更好。