У меня есть простая, реальная проблема, которую я хочу решить, используя подход OO. Мой жесткий диск - это беспорядок. У меня есть 1.500.000 файлов, дубликатов, полных дубликатов папок и т. Д.Лучшая общая стратегия для группировки элементов с использованием нескольких критериев
Первый шаг, разумеется, разбор всех файлов в моей базе данных. Никаких проблем до сих пор, теперь у меня появилось много приятных записей, которые являются «естественными группировками». Примеры этой простой группировки могут быть получены с помощью простых запросов, как:
- Дайте мне все файлы больше чем 100Мб
- Показать все файлы старше 3-х дней
- Получить мне все файлы, оканчивающиеся DOCX
Но теперь предположим, что я хочу найти группы с немного более естественным смыслом. Для этого существуют разные стратегии, в зависимости от «варианта использования».
Предположим, у меня есть плохая привычка сначала загружать все загруженные файлы на рабочий стол. Затем я извлекаю их в соответствующую папку, не удаляя файл ZIP всегда. Я перемещаю их в «чердачную» папку. Для системы, чтобы найти эту группу файлов ориентированный на время подход к поиску, возможно, в сочетании с «проверьте, является ли ZIP такой же, как и папка X».
Пусть другую плохую привычка дублировать файлы, имеющие определенную папку, в которой «чистые файлы» расположены в хорошей структуре, и еще грязные папок. Теперь моя чистая папка имеет 20 картинных галерей, у моей грязной папки 5 дубликатов и 1 новая галерея. Человеческий пользователь может легко идентифицировать эту логику, увидев «О, это все просто дубликаты, это новая, поэтому я помещаю новую в чистую папку и мусор всех дубликатов».
Итак, теперь, чтобы добраться до точки:
Какой комбинацию стратегий или моделей вы бы использовать для решения такой ситуации. Если бы я цепи фильтров «самый трудный» выиграл бы, и я не знаю, как дать системе «тест» для подходящей комбинации. И мне кажется, что это просто фильтрация. Его динамическая группировка путем объединения нескольких критериев для поиска «лучших» групп.
Один очень грубый подход будет таким:
- В начале, все файлы равны
- Во-первых, не так «хорошо» группа каталог
- Если вы большой, (равномерно распределенные имена)
- Если все файлы имеют одинаковую дату создания, вы можете быть «автоактивны»
- Если вы являетесь ребенком программных файлов, я не забочусь о вас на все
- Если я перееду тебя, группа А, в группе С, что это улучшит «энтропии»
Каковы лучшие образцы облегающие эту ситуацию. Стратегия, фильтры и трубы, «Группировка» .. Любые комментарии приветствуются!
Редактировать в reacation ответам:
Маркирование подход: Конечно, мечение приходила мне в голову. Но где я рисую линию. Я мог бы создавать разные типы тегов, такие как InDirTag, CreatedOnDayXTag, TopicZTag, AuthorPTag. Эти теги могут быть структурированы в гирархии, но вопрос о том, как группироваться, останется. Но я дам эту некоторую мысль и добавить свои идеи здесь ..
Промедление комментарий: Да, это звучит так. Но файлы - это только самый простой пример, который я мог бы придумать (и наиболее актуальный на данный момент). Фактически это часть большей картины группировки связанных данных динамическими способами. Возможно, мне следовало бы сохранить его более абстрактным, чтобы подчеркнуть это: я НЕ ищет файл с тегами инструмент или поисковая система, , но алгоритм или шаблон для решения этой проблемы ... (или лучше, идеи , как мечения)
Chris
Спасибо мама;) Просто шучу - жесткая любовь тоже хорошая вещь! – 2008-10-05 13:46:43