2008-10-05 7 views
7

J'ai un problème simple et réel que je veux résoudre en utilisant une approche OO. Mon disque dur est en désordre. J'ai 1.500.000 fichiers, des doublons, des dossiers complets de duplication, et ainsi de suite ...Meilleure stratégie générique pour regrouper des éléments en utilisant plusieurs critères

La première étape, bien sûr, est l'analyse de tous les fichiers dans ma base de données. Aucun problème jusqu'à maintenant, maintenant j'ai eu beaucoup de belles entrées qui sont en quelque sorte "groupés en nature". Des exemples de ce simple regroupement peuvent être obtenus en utilisant des requêtes simples comme:

  1. Donne-moi tous les fichiers de plus de 100 Mo
  2. Afficher tous les fichiers de plus de 3 jours
  3. Donne-moi tous les fichiers se terminant par docx

Mais maintenant supposons que je veux trouver des groupes avec un sens un peu plus naturel. Il existe différentes stratégies pour cela, en fonction du "cas d'utilisation".

Supposons que j'ai la mauvaise habitude de mettre tous mes fichiers téléchargés d'abord sur le bureau. Ensuite, je les extrait dans le dossier approprié, sans supprimer le fichier ZIP toujours. Je les déplace dans un dossier "grenier". Pour le système, de trouver ce groupe de fichiers axée sur le temps approche de recherche, peut-être combiné avec un "vérifier si ZIP est le même dossier X" serait approprié.

On suppose une autre mauvaise habitude de dupliquer les fichiers, ayant un certain dossier où « les fichiers propres » sont situés dans une belle structure , et un autre dossiers en désordre. Maintenant, mon dossier propre a 20 galeries d'images, mon dossier désordonné a 5 dupliqués et 1 nouvelle galerie. Un utilisateur humain pourrait facilement identifier cette logique en voyant "Oh, c'est juste des doublons, c'est un nouveau, alors je mets le nouveau dans le dossier propre et détruit tous les doublons".

Alors, maintenant arriver au point:

Quelle combinaison de stratégies ou modèles utiliseriez-vous pour aborder une telle situation. Si j'enchaîne les filtres, le «plus dur» gagnerait, et je ne sais pas comment laisser le système «tester» la combinaison appropriée. Et il me semble que c'est plus qu'un filtrage. Son regroupement dynamique en combinant plusieurs critères pour trouver les «meilleurs» groupes.

Une approche très approximative serait:

  1. Au début, tous les fichiers sont égaux
  2. Le premier, pas le groupe « bon » est le répertoire
  3. Si vous êtes un grand, répertoire propre, vous gagnez des points (les noms répartis uniformément)
  4. Si tous les fichiers ont la même date de création, vous pouvez être "autocreated"
  5. Si vous êtes un enfant de Program-Files, je ne me soucie pas de vous à all
  6. Si je vous déplacez, le groupe A, dans le groupe C, ce serait d'améliorer la « entropie »

Quels sont les meilleurs modèles répondant à cette situation. Stratégie, Filtres et Pipes, "Regroupement" .. Tous les commentaires sont les bienvenus!

Modifier dans reacation des réponses:

L'approche de marquage: Bien sûr, le marquage traversé mon esprit. Mais où puis-je tracer la ligne. Je pourrais créer différents types de balises, comme InDirTag, CreatedOnDayXTag, TopicZTag, AuthorPTag. Ces balises pourraient être structurées dans une hiérarchie, mais la question de savoir comment regrouper resterait. Mais je vais y réfléchir et ajouter mes idées ici ..

Le commentaire de procrastination: Oui, ça ressemble à ça. Mais les fichiers ne sont que l'exemple le plus simple que je puisse trouver (et le plus pertinent pour le moment). C'est en fait une partie de l'image plus grande du regroupement des données liées de manière dynamique. Peut-être que je devrais avoir gardé plus abstrait, de souligner ceci: Je suis PAS de chercher un fichier de marquage outil ou un moteur de recherche, mais un algorithme ou un modèle pour aborder ce problème ... (ou mieux, des idées , comme le marquage)

Chris

Répondre

2

Je n'ai pas une solution (et je serais ravi de voir un), mais je pourrais suggérer l'extraction des métadonnées de vos fichiers en plus du nom évident, la taille et horodatages.

  • métadonnées en bande telles que les balises ID3 MP3, les informations de version pour les fichiers EXE/DLL, titre HTML et mots-clés, l'information sommaire pour les documents Office etc. Même les fichiers d'images peut avoir des métadonnées intéressantes. Un hachage de l'ensemble du contenu aide si vous recherchez des doublons.
  • métadonnées hors bande telles que peuvent être stockées dans des flux de données NTFS de remplacement - par exemple. ce que vous pouvez modifier dans l'onglet Résumé pour les fichiers non-Office
  • vos navigateurs gardent des informations sur l'endroit d'où vous avez téléchargé les fichiers (bien que Opera ne le garde pas longtemps), si vous pouvez le lire.
5

Vous êtes procrastinating. Arrête ça, et nettoie ton gâchis. Si c'est vraiment grand, je recommande la tactique suivante:

  1. Faire une copie de toutes les choses sur votre disque sur un disque externe (USB ou autre)
  2. faire une installation propre de votre système
  3. Comme Dès que vous trouvez que vous avez besoin de quelque chose, récupérez-le de votre copie et placez-le dans un endroit bien défini
  4. Après 6 mois, jetez votre lecteur externe. Tout ce qui est là ne peut pas être si important.

Vous pouvez également installer Google Desktop, qui ne nettoie pas vos dégâts, mais vous permet au moins de le rechercher efficacement.

Si vous voulez empêcher que cela se produise à l'avenir, vous devez changer la façon dont vous organisez les choses sur votre ordinateur.

Espérons que cela aide.

+0

Merci maman;) Je plaisante - l'amour difficile est aussi une bonne chose! –

1

Vous avez de la fièvre, et la seule prescription est Tag Cloud! Vous allez toujours devoir nettoyer les choses, mais avec des outils comme TaggCloud ou Tag2Find vous pouvez organiser vos fichiers par métadonnées plutôt que par emplacement sur le disque.Tag2Find va regarder un partage, et quand quelque chose est enregistré sur le partage une fenêtre apparaît et vous demande de marquer le fichier.

Vous devriez également obtenir Google Desktop.

Questions connexes