2012-04-16 39 views
2

我會舉一個數據的例子。 (純粹是爲了演示,我不知道很多關於汽車)我應該如何爲django-haystack建模我的數據(多類,多級)?

頂級類別,

Car, Computer, Shoes, .. 

汽車是多方面的。(子類)

Car - 2 door/4 door 
Car - Audi/Bmw/.. 

子類別可以有另子類別。

Audi - A series/S series/R series 

現在,產品可以有多個父母。

Audi A4 -child of- A series - Audi - Car 
Audi A4 -child of- 4 door - Car (one shorter depth) 

我怎麼會在數據庫模型呢?

我已經看過幾種RDBMS方法來搜索功能,它看起來很糟糕。
我正在看django-haystack,solr方法。
但我仍然需要在django的models.py中對此進行建模。

我該怎麼做,併爲乾草堆做一個搜索索引?

我是新來的整個django/haystack/solr。
我看了solr的示例文檔。
它看起來像每個項目擁有所有必要的數據了。(我想人們都叫它變平的數據?)

我可以從數據在某種程度上獨立的元數據(分類樹)(實際產品項目)在DB ?
我只是覺得這是正確的做法,我錯了嗎?

  • 編輯

我忘了提,我想使用Solr的面搜索能力。
所以在DB中建模之後,我的search_indexes.py看起來像乾草堆?

+0

選中此[回答另一個問題](http://stackoverflow.com/a/11318758/279564)提及子類型和超類型。 – Rafa 2012-07-03 21:00:09

回答

0

這是兩件不同的事情。

一個是你想存儲一個項目的多個屬性。爲此,如果您想使用關係數據庫,請使用entity-attribute-value patterneav-django爲django提供了這個實現。

但是,更靈活(更簡單)的方法是使用文檔數據庫(如沙發)或其他NoSQL解決方案。這些提供了一個靈活的模式,因此您不必擔心需要存儲關於特定對象/項目的多少「屬性」或「元數據」。

您問題的另一部分是維護與之間的關係樹深度。這是使用nested set model(也稱爲修改的預訂樹遍歷)實現的。像eav一樣,有django-mptt

+0

感謝您的建議。我沒有完全掌握EAV,但它看起來很複雜,嵌套集模型似乎不支持多個父類(類別)。然後我發現solr多面搜索能夠做我想做的事。 Hoever,正如我在帖子中提到的,solr示例在單個文件中包含所有元數據和數據。我想將元數據與數據分離並將它們存儲在數據庫中,同時使用solr分面搜索功能。我希望這是有道理的。 – eugene 2012-04-16 08:36:03

相關問題