Mise à jour: J'ai maintenant écrit une extension PHP appelé php_ssdeep pour l'API ssdeep C pour faciliter hachage flou et des comparaisons de hachage dans PHP en mode natif. Plus d'informations peuvent être trouvées over at my blog. J'espère que cela aidera les gens.Vérification des doublons de documents et de documents similaires dans une application de gestion des documents
Je suis impliqué dans l'écriture d'une application de gestion de documents personnalisée en PHP sur une machine Linux qui stockera divers formats de fichiers (potentiellement 1000 de fichiers) et nous devons être en mesure de vérifier si un document texte a déjà été téléchargé duplication dans la base de données. Essentiellement, lorsqu'un utilisateur télécharge un nouveau fichier, nous aimerions pouvoir lui présenter une liste de fichiers qui sont en double ou qui contiennent un contenu similaire. Cela leur permettrait ensuite de choisir l'un des documents préexistants ou de continuer à télécharger le leur.
Des documents similaires seraient déterminés en regardant dans leur contenu pour des sentances similaires et peut-être une liste générée dynamiquement de mots-clés. Nous pouvons ensuite afficher un pourcentage de correspondance avec l'utilisateur pour l'aider à trouver les doublons.
Pouvez-vous recommander des packages pour ce processus et des idées sur la façon dont vous auriez pu le faire dans le passé?
Le double directe, je pense que peut être fait en obtenant tout le contenu du texte et
- Décapage des espaces
- Suppression des signes de ponctuation
- Convertir en minuscule ou en majuscule
forment alors une MD5 hash à comparer avec tous les nouveaux documents. L'extraction de ces éléments devrait aider à éviter que des dupes ne soient trouvés si l'utilisateur édite un document pour ajouter des sauts de paragraphe supplémentaires, par exemple. Des pensées? Ce processus pourrait également s'exécuter en tant que travail nocturne et nous pourrions informer l'utilisateur de tous les doublons lors de la prochaine connexion si l'exigence de calcul est trop grande pour fonctionner en temps réel. Le temps réel serait préféré cependant.
L'utilisation d'un hachage MD5 ne vous aiderait qu'avec deux documents identiques. Si un seul caractère est différent, les hachages MD5 résultants sont loin d'être similaires (c'est l'un des points de hachage). Par conséquent, cela ne fonctionnerait pas pour trouver des fichiers similaires ... – Franz
Je le réalise. C'est pourquoi j'ai mentionné cette technique pour trouver des correspondances exactes et non pour des fichiers similaires. – Treffynnon