使用多个条件对项目进行分组的最佳通用策略

Chr*_*ian 7 directory-structure file

我想用OO方法解决一个简单的现实问题.我的硬盘很乱.我有1.500.000文件,重复文件,完整的重复文件夹,等等...

当然,第一步是将所有文件解析到我的数据库中.到目前为止没有问题,现在我有很多很好的条目,有点"自然分组".可以使用以下简单查询获得此简单分组的示例:

  1. 给我所有大于100MB的文件
  2. 显示超过3天的所有文件
  3. 找到所有以docx结尾的文件

但现在假设我想找到一些具有更自然意义的群体.根据"用例",有不同的策略.

假设我养成了将所有下载的文件放在桌面上的坏习惯.然后我将它们提取到适当的文件夹,而不是总是删除ZIP文件.我将它们移动到"阁楼"文件夹中.对于系统,要找到这组文件的时间导向搜索方法,可能与"检查ZIP是否相同然后文件夹X"相结合是合适的.

假设另一个重复文件的坏习惯,有一些文件夹,其中"干净的文件"位于一个漂亮的结构中,另一个文件夹是杂乱的.现在我的干净文件夹有20个图片库,我的杂乱文件夹有5个重复和1个新图库.一个人类用户可以通过看到"哦,那些只是重复,这是一个新的,所以我把新的一个放在干净的文件夹中并删除所有重复"来轻松识别这个逻辑.

所以,现在要谈到这一点:

您将使用哪种策略或模式组合来解决这种情况.如果我链式过滤器,"最难"将获胜,我不知道如何让系统"测试"合适的组合.它告诉我,它只是过滤.它通过组合多个标准来动态分组,以找到"最佳"组.

一个非常粗略的方法是:

  1. 一开始,所有文件都是相同的
  2. 第一个,不是那么"好"的组是目录
  3. 如果你是一个大而干净的目录,你可以获得积分(均匀分布的名字)
  4. 如果所有文件具有相同的创建日期,您可能会"自动处理"
  5. 如果你是Program-Files的孩子,我根本不关心你
  6. 如果我移动你,A组,进入C组,这将改善"熵"

适合这种情况的最佳模式是什么?战略,过滤器和管道,"分组"..欢迎任何评论!

在重新开始回答时编辑:

标记方法: 当然,标记克服了我的想法.但是我在哪里画线.我可以创建不同的标签类型,如InDirTag,CreatedOnDayXTag,TopicZTag,AuthorPTag.这些标签可以用hirarchy结构化,但是如何分组的问题仍然存在.但我会给出一些想法,并在此添加我的见解..

拖延评论: 是的,听起来像那样.但文件只是我能想到的最简单的例子(目前最相关).它实际上是以动态方式对相关数据进行分组的更大图景的一部分.也许我应该保持它更抽象,强调这一点:我不是在寻找文件标记工具或搜索引擎,而是一种算法或模式来解决这个问题...(或者更好的是,想法,比如标记)

克里斯

Rol*_*olf 5

你在拖延.停下来,清理你的烂摊子.如果真的很大,我推荐以下策略:

  1. 在外部磁盘(USB或其他)上复制驱动器上的所有内容
  2. 彻底安装您的系统
  3. 一旦您发现需要某些东西,请从您的副本中获取,并将其放置在明确定义的位置
  4. 6个月后,丢弃外部驱动器.那里的任何东西都不可能那么重要.

您也可以安装Google桌面,它不会清理您的混乱,但至少可以让您有效地搜索它.

如果您希望将来阻止这种情况发生,您必须更改计算机上组织内容的方式.

希望这可以帮助.


Hug*_*len 2

我没有解决方案(并且很想看到一个解决方案),但我可能建议除了明显的名称、大小和时间戳之外,从文件中提取元数据。

  • 带内元数据,例如 MP3 ID3 标签、EXE/DLL 的版本信息、HTML 标题和关键字、Office 文档的摘要信息等。甚至图像文件也可以有有趣的元数据。如果查找重复项,整个内容的哈希值会有所帮助。
  • 带外元数据,例如可以存储在 NTFS 备用数据流中 - 例如。您可以在非 Office 文件的“摘要”选项卡中编辑的内容
  • 如果您可以阅读,您的浏览器会保存有关您从何处下载文件的信息(尽管 Opera 不会保存很长时间)。