2009-12-28 50 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