我应该如何为django-haystack建模我的数据(多类别,多级别)?

时间:2012-04-16 06:22:44

标签: django database-design solr schema 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)

我如何在DB中对此进行建模?

我已经研究了一些仅限RDBMS的搜索功能方法,而且维护起来很糟糕 我正在看django-haystack,solr方法 但我仍然需要在django的models.py中对此进行建模。

我该怎么做并为haystack制作搜索索引?

我是整个django / haystack / solr的新手 我查看了solr的示例文档 看起来每个项目都包含所有必要的数据。(我猜人们称之为扁平数据?)

我能以某种方式将元数据(类别树)与数据库中的数据(实际产品项)分开吗? 我觉得这是正确的方法,我错了吗?

  • EDIT

我忘了提到我想使用solr的分面搜索功能 所以在DB中建模之后,我的search_indexes.py对于haystack来说会是什么样子?

1 个答案:

答案 0 :(得分:0)

这是两件不同的事情。

一个是您想要为项目存储多个属性。为此,如果要使用关系数据库,请使用entity-attribute-value patterneav-django为django提供了这种实现。

然而,更灵活(也不那么麻烦)的方法是使用文档数据库(如沙发)或其他NoSQL解决方案。它们提供了灵活的模式,因此您不必担心必须存储多少“属性”或“元数据”。

问题的另一部分是维护与 n -depth的关系树。这是使用nested set model(也称为修改的预订树遍历)实现的。和eav一样,有django-mptt