Обновление: я написал расширение PHP под названием php_ssdeep для API ssdeep C, чтобы упростить нечеткое хэширование и сравнение хэшей в PHP изначально. Дополнительную информацию можно найти в моем блоге< /а>сильный>. Я надеюсь, что это полезно для людей.
Я участвую в написании пользовательского приложения для управления документами на PHP в Linux-системе, которое будет хранить различные форматы файлов (потенциально 1000 файлов), и нам нужно иметь возможность проверить, был ли текстовый документ загружен раньше, чтобы предотвратить дублирование в базе данных .
По сути, когда пользователь загружает новый файл, мы хотели бы иметь возможность предоставить ему список файлов, которые либо являются дубликатами, либо содержат похожий контент. Это позволит им выбрать один из уже существующих документов или продолжить загрузку своих собственных.
Сходные документы будут определяться путем просмотра их содержимого на наличие похожих предложений и, возможно, динамически генерируемого списка ключевых слов. Затем мы можем отобразить процентное совпадение для пользователя, чтобы помочь ему найти дубликаты.
Можете ли вы порекомендовать какие-либо пакеты для этого процесса и какие-либо идеи о том, как вы могли бы сделать это в прошлом?
Я думаю, что прямой дубликат можно сделать, получив весь текстовый контент и
- Удаление пробелов
- Удаление знаков препинания
- Преобразование в нижний или верхний регистр
затем сформируйте хэш MD5 для сравнения с любыми новыми документами. Удаление этих элементов должно помочь предотвратить обнаружение дубликатов, если пользователь редактирует документ, например, чтобы добавить дополнительные разрывы абзаца. Есть предположения?
Этот процесс также потенциально может выполняться как ночное задание, и мы можем уведомлять пользователя о любых дубликатах при следующем входе в систему, если вычислительные требования слишком велики для запуска в реальном времени. Однако предпочтение отдается реальному времени.