La mejor estrategia genérica para agrupar artículos usando múltiples criterios

StackOverflow https://stackoverflow.com/questions/171899

  •  05-07-2019
  •  | 
  •  

Pregunta

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.

El primer paso, por supuesto, es analizar todos los archivos en mi base de datos. No hay problemas hasta ahora, ahora tengo muchas entradas agradables que son de tipo "naturalmente agrupadas". Se pueden obtener ejemplos para esta agrupación simple mediante consultas simples como:

  1. Dame todos los archivos de más de 100 MB
  2. Mostrar todos los archivos de más de 3 días
  3. Consígueme todos los archivos que terminen en docx

Pero ahora suponga 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 a la carpeta correspondiente, sin eliminar siempre el archivo ZIP. Los muevo a un `` ático '' carpeta. Para el sistema, para encontrar este grupo de archivos un enfoque de búsqueda orientado al tiempo , tal vez combinado con un " compruebe si el ZIP es el mismo que la carpeta X " sería adecuado.

Suponga otro mal hábito de duplicar archivos, al tener alguna carpeta donde " los archivos limpios " se encuentran en una estructura agradable y otras carpetas desordenadas . Ahora mi carpeta limpia tiene 20 galerías de imágenes, mi carpeta desordenada tiene 5 galerías duplicadas y 1 nueva. Un usuario humano podría identificar fácilmente esta lógica al ver "Oh, eso es solo duplicados, es uno nuevo, así que puse el nuevo en la carpeta limpia y eliminé todos los duplicados".

Entonces, ahora para ir al punto:

¿Qué combinación de estrategias o patrones usarías para abordar esta situación? Si la cadena filtra los "más duros" ganaría, y no tengo idea de cómo dejar que el sistema '' pruebe '' para combinación adecuada. Y me parece que es más que solo filtrar. Su agrupación dinámica combinando múltiples criterios para encontrar el "mejor" grupos.

Un enfoque muy aproximado sería este:

  1. Al principio, todos los archivos son iguales
  2. El primero, no tan "bueno" grupo es el directorio
  3. Si eres un directorio grande y limpio, ganas puntos (nombres distribuidos uniformemente)
  4. Si todos los archivos tienen la misma fecha de creación, es posible que " se haya autocreado "
  5. Si eres hijo de Program-Files, no me importas en absoluto
  6. Si lo muevo, el grupo A, al grupo C, esto mejoraría la " entropía "

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

Editar en respuesta a las respuestas:

El enfoque de etiquetado: Por supuesto, el etiquetado cruzó mi mente. Pero donde trazo la linea Podría crear diferentes tipos de etiquetas, como InDirTag, CreatedOnDayXTag, TopicZTag, AuthorPTag. Estas etiquetas podrían estar estructuradas en una jerarquía, pero la pregunta de cómo agruparse permanecería. Pero lo pensaré un poco y agregaré mis ideas aquí ...

El comentario de dilación: Sí, suena así. Pero los archivos son solo el ejemplo más simple que se me ocurrió (y el más relevante en este momento). En realidad, es parte de la imagen más amplia de agrupar datos relacionados de manera dinámica. Quizás debería haberlo mantenido más abstracto, para enfatizar esto: NO estoy buscando una herramienta de etiquetado de archivos o un motor de búsqueda, sino un algoritmo o patrón para abordar este problema ... (o mejor, ideas, como etiquetar)

Chris

¿Fue útil?

Solución

No tengo una solución (y me encantaría verla), pero puedo sugerir que extraiga metadatos de sus archivos además del nombre, el tamaño y las marcas de tiempo obvios.

  • metadatos dentro de la banda, como etiquetas ID3 de MP3, información de versión para EXEs / DLL, título HTML y palabras clave, información resumida para documentos de Office, etc. Incluso los archivos de imágenes pueden tener metadatos interesantes. 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, por ejemplo. lo que puede editar en la pestaña Resumen para archivos que no son de Office
  • sus navegadores guardan información sobre dónde ha descargado los archivos (aunque Opera no lo guarda por mucho tiempo), si puede leerlos.

Otros consejos

Eres procrastinar . Deja eso y limpia tu desorden. Si es realmente grande, recomiendo la siguiente táctica:

  1. Haga una copia de todas las cosas en su unidad en un disco externo (USB o lo que sea)
  2. Haz una instalación limpia de tu sistema
  3. Tan pronto como encuentre que necesita algo, consígalo de su copia y colóquelo en una ubicación bien definida
  4. Después de 6 meses, deseche su unidad externa. Cualquier cosa que esté allí no puede ser tan importante.

También puedes instalar Google Desktop, que no limpia tu desorden, pero al menos te permite buscarlo de manera eficiente.

Si desea evitar que esto suceda en el futuro, debe cambiar la forma en que organiza las cosas en su computadora.

Espero que esto ayude.

Tienes 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 verá un recurso compartido, y cuando se guarde algo en el recurso compartido, aparecerá una ventana emergente y le pedirá que etiquete el archivo.

También debería obtener Google Desktop también.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top