2008-10-05 8 views
7

Tengo un problema simple, de la vida real, que quiero resolver usando un enfoque OO. Mi disco duro es un desastre. Tengo 1.500.000 archivos, duplicados, carpetas duplicadas completas, etc.Mejor estrategia genérica para agrupar elementos usando múltiples criterios

El primer paso, por supuesto, es analizar todos los archivos en mi base de datos. No hay problemas hasta ahora, ahora tengo un montón de entradas agradables que están como "naturalmente agrupadas". Ejemplos de este simple agrupación se pueden obtener mediante consultas simples como:

  1. Dame todos los archivos más grandes que 100 MB
  2. Mostrar todos los archivos mayores de 3 días
  3. Sácame todos los archivos que terminan con docx

Pero ahora supongo que quiero encontrar grupos con un significado un poco más natural. Existen diferentes estrategias para esto, dependiendo del "caso de uso".

Supongamos que tengo la mala costumbre de poner todos mis archivos descargados primero en el escritorio. Luego los extraigo en la carpeta apropiada, sin eliminar el archivo ZIP siempre. Los muevo a una carpeta "ático". Para el sistema, para encontrar este grupo de archivos, un enfoque de búsqueda orientado al tiempo, quizás combinado con un "control si el ZIP es el mismo que la carpeta X" sería adecuado.

asumir otra mala costumbre de duplicación de archivos, tener alguna carpeta en la que "los archivos limpios" se encuentran en una estructura agradable, y otro carpetas desordenadas. Ahora mi carpeta limpia tiene 20 galerías de imágenes, mi carpeta desordenada tiene 5 duplicadas y 1 galería nueva. Un usuario humano podría identificar fácilmente esta lógica al ver "Oh, eso es solo duplicados, eso es uno nuevo, así que pongo el nuevo en la carpeta limpia y desecho todos los duplicados".

Así pues, ahora a llegar al punto:

Qué combinación de estrategias o patrones usaría para hacer frente a tal situación. Si encadenó filtros, el "más difícil" ganaría, y no tengo idea de cómo dejar que el sistema "pruebe" la combinación adecuada. Y me parece que es más que solo filtrado. Su agrupación dinámica combina múltiples criterios para encontrar los "mejores" grupos.

Un enfoque muy aproximada sería la siguiente:

  1. En principio, todos los archivos son iguales
  2. La primera no es tan "buena" del grupo, es el directorio
  3. Si usted es un grande, limpiar el directorio, usted gana puntos (nombres distribuidos uniformemente)
  4. Si todos los archivos tienen la misma fecha de creación, puede ser "autocreated"
  5. Si usted es un hijo de Archivos de programa, no me preocupo por usted en todos
  6. Si te mueves, grupo A, en el grupo C, ¿esto mejorar la "entropía"

¿Cuáles son los mejores patrones se ajusten a esta situación. Estrategia, filtros y tuberías, "Agrupación" ... ¡Cualquier comentario es bienvenido!

Editar en reacation de respuestas:

El enfoque de marcado: Por supuesto, el etiquetado pasado por la cabeza. Pero, ¿dónde dibujo la línea? Pude crear diferentes tipos de etiquetas, como InDirTag, CreatedOnDayXTag, TopicZTag, AuthorPTag. Estas etiquetas podrían estructurarse en una jerarquía, pero la pregunta de cómo agruparse se mantendría. Pero voy a pensar un poco y agregar mis ideas aquí ...

El comentario de la procrastinación: Sí, parece que sí. Pero los archivos son solo el ejemplo más simple que pude encontrar (y el más relevante en este momento). Es realmente parte de la imagen más grande de la agrupación de datos relacionados de forma dinámica. Tal vez debería haberlo mantenido más abstracto, para enfatizar esto: Estoy NO buscando un archivo de etiquetado herramienta o un motor de búsqueda, pero un algoritmo o patrón para abordar este problema ... (o mejor, ideas , como el etiquetado)

Chris

Respuesta

2

no tengo una solución (y me gustaría ver uno), pero que podría sugerir la extracción de metadatos de los archivos además del nombre obvio, el tamaño y las marcas de tiempo.

  • metadatos dentro de banda, como las etiquetas ID3 de MP3, información de la versión para EXE/DLL, título HTML y las palabras clave, información de resumen de documentos de Office, etc. Incluso los archivos de imagen puede tener metadatos interesante. Un hash de todo el contenido ayuda si busca duplicados.
  • metadatos fuera de banda, como los que se pueden almacenar en flujos de datos alternativos NTFS, p. Ej. lo que puede editar en la pestaña Resumen para archivos que no son de Office
  • sus navegadores mantienen la información de donde ha descargado los archivos (aunque Opera no la conserva por mucho tiempo), si puede leerla.
5

Eres procrastinating. Detener eso, y limpiar su desastre. Si es muy grande, recomiendo la siguiente táctica:

  1. hacer una copia de todas las cosas en su unidad en un disco externo (USB o lo que sea)
  2. hacer una instalación limpia de su sistema
  3. Como tan pronto como encuentre que necesita algo, recójalo de su copia y colóquelo en un lugar bien definido
  4. Después de 6 meses, arroje su unidad externa. Todo lo que está allí no puede ser tan importante.

También puede instalar Google Desktop, que no limpia su desorden, pero al menos le permite buscarlo de manera eficiente.

Si desea evitar que esto suceda en el futuro, tiene que cambiar la forma en que está organizando las cosas en su computadora.

Espero que esto ayude.

+0

Gracias mamá;) Es una broma, ¡el amor duro también es bueno! –

1

¡Tiene fiebre y la única receta es Tag Cloud! Todavía tendrá que limpiar las cosas, pero con herramientas como TaggCloud o Tag2Find puede organizar sus archivos por metadatos en lugar de la ubicación en la unidad.Tag2Find mirará un recurso compartido, y cuando se guarda algo en el recurso aparece una ventana emergente y le pide que marque el archivo.

También debe obtener Google Desktop también.

Cuestiones relacionadas