我想用OO方法解决一个简单的现实问题.我的硬盘很乱.我有1.500.000文件,重复文件,完整的重复文件夹,等等...
当然,第一步是将所有文件解析到我的数据库中.到目前为止没有问题,现在我有很多很好的条目,有点"自然分组".可以使用以下简单查询获得此简单分组的示例:
但现在假设我想找到一些具有更自然意义的群体.根据"用例",有不同的策略.
假设我养成了将所有下载的文件放在桌面上的坏习惯.然后我将它们提取到适当的文件夹,而不是总是删除ZIP文件.我将它们移动到"阁楼"文件夹中.对于系统,要找到这组文件的时间导向搜索方法,可能与"检查ZIP是否相同然后文件夹X"相结合是合适的.
假设另一个重复文件的坏习惯,有一些文件夹,其中"干净的文件"位于一个漂亮的结构中,另一个文件夹是杂乱的.现在我的干净文件夹有20个图片库,我的杂乱文件夹有5个重复和1个新图库.一个人类用户可以通过看到"哦,那些只是重复,这是一个新的,所以我把新的一个放在干净的文件夹中并删除所有重复"来轻松识别这个逻辑.
所以,现在要谈到这一点:
您将使用哪种策略或模式组合来解决这种情况.如果我链式过滤器,"最难"将获胜,我不知道如何让系统"测试"合适的组合.它告诉我,它只是过滤.它通过组合多个标准来动态分组,以找到"最佳"组.
一个非常粗略的方法是:
适合这种情况的最佳模式是什么?战略,过滤器和管道,"分组"..欢迎任何评论!
在重新开始回答时编辑:
标记方法: 当然,标记克服了我的想法.但是我在哪里画线.我可以创建不同的标签类型,如InDirTag,CreatedOnDayXTag,TopicZTag,AuthorPTag.这些标签可以用hirarchy结构化,但是如何分组的问题仍然存在.但我会给出一些想法,并在此添加我的见解..
拖延评论: 是的,听起来像那样.但文件只是我能想到的最简单的例子(目前最相关).它实际上是以动态方式对相关数据进行分组的更大图景的一部分.也许我应该保持它更抽象,强调这一点:我不是在寻找文件标记工具或搜索引擎,而是一种算法或模式来解决这个问题...(或者更好的是,想法,比如标记)
克里斯
我刚刚爱上了NHibernate和流畅的界面.后者支持非常好的映射和重构支持(不再需要xml文件).
但没有人是完美的,所以我错过了流利的多对多映射.有人知道它是否已经存在吗?如果是这样,一行简单的代码就会很好.
但要坚持问题的标题,有没有办法结合流畅和正常的NHibernate映射.
目前我使用以下行进行我的测试设置WITH Fluent,以及第二个代码块用于我的测试WITHOUT流畅(使用XML映射).如何判断流利使用流畅的IF AVAILABLE和XML否则......
var cfg = new Configuration();
cfg.AddProperties(MsSqlConfiguration.MsSql2005.ConnectionString.Is(_testConnectionstring).ToProperties());
cfg.AddMappingsFromAssembly(typeof(CatMap).Assembly);
new SchemaExport(cfg).Create(true, true);
var persistenceModel = new PersistenceModel();
persistenceModel.addMappingsFromAssembly(typeof(CatMap).Assembly);
IDictionary<string, string> properties = MsSqlConfiguration.MsSql2005.UseOuterJoin().ShowSql().ConnectionString.Is(_testConnectionstring).ToProperties();
properties.Add("command_timeout", "340");
session = new SessionSource(properties, persistenceModel).CreateSession();
Run Code Online (Sandbox Code Playgroud)
没有流利......
config = new Configuration();
IDictionary props = new Hashtable();
props["connection.provider"] = "NHibernate.Connection.DriverConnectionProvider";
props["dialect"] = "NHibernate.Dialect.MsSql2005Dialect";
props["connection.driver_class"] = "NHibernate.Driver.SqlClientDriver";
props["connection.connection_string"] = "Server=localhost;initial catalog=Debug;Integrated Security=SSPI";
props["show_sql"] = "true";
foreach (DictionaryEntry de in props)
{
config.SetProperty(de.Key.ToString(), de.Value.ToString());
}
config.AddAssembly(typeof(CatMap).Assembly);
SchemaExport se = new SchemaExport(config);
se.Create(true, true);
factory = …Run Code Online (Sandbox Code Playgroud)