Лучшая общая стратегия для группировки элементов по нескольким критериям - PullRequest
7 голосов
/ 05 октября 2008

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

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

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

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

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

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

Итак, теперь перейдем к точке:

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

Один очень грубый подход был бы таким:

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

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

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

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

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

Chris

Ответы [ 3 ]

5 голосов
/ 05 октября 2008

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

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

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

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

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

2 голосов
/ 05 октября 2008

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

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

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

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

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