Наилучшая общая стратегия группировки элементов по нескольким критериям

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

  •  05-07-2019
  •  | 
  •  

Вопрос

У меня есть простая, реальная жизненная проблема, которую я хочу решить, используя OO-подход. Мой жесткий диск в полном беспорядке. У меня есть 1.500.000 файлов, дубликатов, полных папок-дубликатов и так далее...

Первым шагом, конечно, является синтаксический анализ всех файлов в моей базе данных.Пока никаких проблем, теперь у меня есть много хороших записей, которые как бы "естественно сгруппированы".Примеры для этой простой группировки могут быть получены с помощью простых запросов, таких как:

  1. Дайте мне все файлы размером более 100 МБ
  2. Показывать все файлы старше 3 дней
  3. Достаньте мне все файлы, заканчивающиеся на docx

Но теперь предположим, что я хочу найти группы с немного более естественным значением.Для этого существуют различные стратегии, в зависимости от "варианта использования".

Предположим, у меня есть плохая привычка сначала размещать все мои загруженные файлы на рабочем столе.Затем я извлекаю их в соответствующую папку, не всегда удаляя ZIP-файл.Я перемещаю их в папку "чердак".Для системы, чтобы найти эту группу файлов, a ориентированный на время подход поиска, возможно, в сочетании с "проверьте, совпадает ли ZIP с папкой X", был бы подходящим.

Предположим, что есть еще одна плохая привычка дублировать файлы, имея некоторую папку, в которой "чистые файлы" находятся в приятная структура, и еще один грязные папки.Теперь в моей чистой папке 20 галерей изображений, в моей грязной папке 5 дублированных и 1 новая галерея.Пользователь-человек мог бы легко идентифицировать эту логику, увидев "О, это все просто дубликаты, это новый, поэтому я помещаю новый в папку clean и удаляю все дубликаты".

Итак, теперь перейдем к сути:

Какую комбинацию стратегий или паттернов вы бы использовали, чтобы справиться с такой ситуацией?Если я создам цепочку фильтров, победит самый "сложный", и я понятия не имею, как позволить системе "протестировать" подходящую комбинацию.И мне кажется, что это нечто большее, чем просто фильтрация.Его динамическая группировка осуществляется путем объединения нескольких критериев для поиска "лучших" групп.

Одним из очень грубых подходов было бы следующее:

  1. Вначале все файлы равны
  2. Первая, не столь "хорошая" группа - это каталог
  3. Если у вас большой и чистый каталог, вы зарабатываете баллы (равномерно распределенные имена).
  4. Если все файлы имеют одинаковую дату создания, возможно, вы были "созданы автоматически".
  5. Если ты дитя Program-Files, то ты мне вообще безразличен
  6. Если я переведу вас, группу А, в группу С, улучшит ли это "энтропию"

Каковы наилучшие шаблоны, подходящие для этой ситуации?Стратегия, фильтры и каналы, "Группировка"..Любые комментарии приветствуются!

Редактировать в ответ на ответы:

Подход к маркировке: Конечно, пометка приходила мне в голову.Но где мне провести черту?Я мог бы создавать различные типы тегов, такие как InDirTag, CreatedOnDayXTag, TopicZTag, AuthorPTag.Эти теги могли бы быть структурированы в иерархическом порядке, но вопрос о том, как группировать, остался бы открытым.Но я немного подумаю над этим и добавлю сюда свои соображения..

Комментарий о прокрастинации: Да, это звучит именно так.Но файлы - это лишь самый простой пример, который я мог бы придумать (и самый актуальный на данный момент).На самом деле это часть общей картины группировки связанных данных динамическими способами.Возможно, мне следовало бы сделать это более абстрактным, чтобы подчеркнуть это:Я такой НЕ ищущий пометка файла инструмент или поисковая система, но алгоритм или шаблон чтобы подойти к этой проблеме...(или, лучше, идеи, такие как пометка)

Крис

Это было полезно?

Решение

У меня нет решения (и я хотел бы его увидеть), но я мог бы предложить извлечь метаданные из ваших файлов помимо очевидных имени, размера и временных меток.

  • встроенные метаданные, такие как теги MP3 ID3, информация о версии для EXES / DLL, заголовок HTML и ключевые слова, сводная информация для документов Office и т.д.Даже файлы изображений могут содержать интересные метаданные.Хэш всего содержимого помогает при поиске дубликатов.
  • внеполосные метаданные, такие как могут храниться в альтернативных потоках данных NTFS - например.что вы можете отредактировать на вкладке Сводка для файлов, не относящихся к Office
  • ваши браузеры сохраняют информацию о том, откуда вы скачали файлы (хотя Opera хранит ее недолго), если вы можете ее прочитать.

Другие советы

Ты прокрастинирующий.Прекрати это и наведи порядок в своем беспорядке.Если он действительно большой, я рекомендую следующую тактику:

  1. Сделайте копию всего содержимого вашего накопителя на внешний диск (USB или любой другой).
  2. Выполните чистую установку вашей системы
  3. Как только вы обнаружите, что вам что-то нужно, достаньте это из своей копии и поместите в четко определенное место
  4. Через 6 месяцев выбросьте свой внешний накопитель.Все, что там есть, не может быть настолько важным.

Вы также можете установить Google Desktop, который не убирает ваш беспорядок, но, по крайней мере, позволяет вам осуществлять эффективный поиск.

Если вы хотите предотвратить подобное в будущем, вам необходимо изменить способ организации работы на вашем компьютере.

Надеюсь, это поможет.

У вас жар, и единственный рецепт - Облако тегов!Вам все равно придется все навести порядок, но с помощью таких инструментов, как ТаггКлауд или Поиск тега2 вы можете упорядочить свои файлы по метаданным, а не по расположению на диске.Tag2Find будет просматривать общий ресурс, и когда что-либо сохраняется в общем ресурсе, появляется всплывающее окно с просьбой пометить файл.

Вы также должны получить Google Desktop тоже.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top