2009-12-28 51 views
1

因此,我将在每个影片的xml中有一个相当大的剧情关键字列表,在这些列表中他们将被输入到我在内存中创建的每个Movie实例中。如何在C#中为电影实现绘图关键字?

但我不知道我应该如何实现这个?

它与IMDb's相似。

我希望这能够让我找到所有有说'车祸'或'欺骗'的电影。或“Scene After End Credits”情节关键字等。

该如何定义此类型?它应该是一个列表吗?我怎样才能最好地实现这一点?关闭我的头,我可以使用List,然后查看请求关键字是否在每个电影的PlotKeywords列表中。但我觉得有一个更好的方式来建模,并得到更快或更清洁的结果等。

应绘图关键字是字符串还是自定义类型?他们应该如何定义和存储?

任何想法?

回答

2

我会认为类似'标签'的关键字是其他应用程序。这基本上是他们想要的。因此,这将是如果你想有这个数据库的所有工作TagMovie

+0

谢谢,听起来不错。你对许多人意味着什么?你能举一些例子吗? – 2009-12-28 18:41:22

+0

琼,我相信多对多的评论者指的是关系数据库中的多对多关系。用关系数据库解决你的问题是微不足道的,但是用传统的内存数据结构来处理问题可能相当复杂。 你真的应该考虑使用数据库。 – 2009-12-28 18:47:19

+0

由DB感谢,你的意思是像Oracle这样的数据库结构?数据将在xml中。这会影响它吗? – 2009-12-28 18:52:59

1

之间的许多一对多的关系,那么剧情的关键字将有一个表,电影还会有一个,并且您将拥有关键字与电影关系的交集表。这样,当您搜索关键字时,只需返回movies-to-keywords表中包含关键字ID的所有电影的列表。

如果你想实现这个“内存”,你可以构造一个类似的创建,从而当你“加载”每一部电影(从XML或其他),你填充一个Dictionary<string,List<Movie>>关键是关键字和电影被添加到与该字符串关联的列表中。这样,稍后,加载包含关键字的电影列表非常快速且容易。

+0

谢谢,我明白你的意思。我会在内存中执行它,但是当你有这个词典时,你将如何实现多关键字搜索?例如,列出所有包含这个AND AND(this OR)的电影? – 2009-12-28 18:44:48

+1

您可以使用LINQ快速轻松地搜索内存中的集合,包括字典。就像myDictionary.Where(kvp => mySearchKeyWords.Contains(kvp.Key))。选择(kvp => kvp.Value),例如 – GWLlosa 2009-12-28 18:49:06

+0

感谢它是有道理的。我认为这应该会更容易。 – 2009-12-28 18:54:01