Merci Pascal de ta réponse.
J’ai pour l’instant tenté de calculer le similar_text() entre la dernière version et toutes les versions précédentes, et classer suivant ce chiffre, ça marche bien tant que l’on ajoute du contenu, mais dès que l’on en efface…
J’ai pensé alors un truc comme celui que tu me proposes, mais à l’échelle d’un mot, mais sur le papier, je n’ai pas réussi. Considérons si tu veux bien ces deux cas ensembles :
Imaginons que l’auteur 1 écrivent :
Code :
- Le
- Joli
- Petit
- Chaperon
- Rouge
- Dans
- Le
- bois
- Vert
|
Et que l’auteur 2 viennent modifier cela en
Code :
- Le
- Petit
- Chaperon
- Rouge
- Et
- Vert
- Dans
- Les
- Jardins
- Rouges
|
J’ai deux liste de mots avec des mots répété, avec à la fois des insertions, suppression et modification, et les trois en même temps, je ne suis pas capable de voir ce qui a été inséré, supprimé, ou modifié (si j’ai la garantie qu’il y en a que un des trois, ok, c’est facile, c’est quand il y a les 3 en même temps que je ne vois pas comment faire) avec une algorithme. L’œil identifie des groupes de mots qui lui donne une intuition, mais l’algorithme…. Et le même problème va se poser si l’on procède par tranche de 100 caractères par exemple. (on ne peut pas faire par ligne, car en HTML, la notion de ligne varie suivant la taille de l’écran, ou alors c’est que une ligne fait un paragraphe complet.
En même temps, il est vrai que suivant les modifications que l’on fait avec SVN, et que l’on utilise le comparateur d’éclipse, on voit bien qu’il perd les pédales si l’on va trop loin.
Pour mettre en place ta proposition, je me dis qu’il faudrait commencer par faire plutôt un algorithme qui cherche les plus grandes chaines communes en premier lieu, et partir de ce résultat pour imaginer les modifications, mais la complexité d’un tel algorithme va vite monter, puisqu’il va falloir prendre toutes les tailles de chaines de 1 à N, prendre tous les sous chaines possibles de cette taille, et chercher leurs occurrences dans la nouvelle chaine, puis choisir un certain nombre de résultat de manière à couvrir le maximum de caractère (ce qui n’implique pas que tout les résultats les plus grands soient les meilleurs pour ça), et à partir de là, on suppose que ces morceaux les plus grands sont de la même origine, et que ce qui a autour à été modifié, supprimé ou ajouté.
J’utilise CKEditor comme zone de saisie, et il y a un bouton précédent et suivant. Je me suis dit que je pourrai récupérer cette liste pour reconstruire les modifications… … mais si l’utilisateur coupe et colle le contenu de l’article, cette liste le déclarera comme l’unique auteur…
J’ai pensé à utiliser coté "base de donnée" le full-text ( http://dev.mysql.com/doc/refman/5. [...] earch.html ) ...
Rufo, merci aussi, il est trop tard pour que je me penchez sur ta proposition, mais ça semble intéressant. Je reviens en parler une fois que j'ai lu tout tes liens !