我将举例说明数据。 (纯粹是为了示范,我对汽车知之甚少)
热门类别,
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的示例文档 看起来每个项目都包含所有必要的数据。(我猜人们称之为扁平数据?)
我能以某种方式将元数据(类别树)与数据库中的数据(实际产品项)分开吗? 我觉得这是正确的方法,我错了吗?
我忘了提到我想使用solr的分面搜索功能 所以在DB中建模之后,我的search_indexes.py对于haystack来说会是什么样子?
答案 0 :(得分:0)
这是两件不同的事情。
一个是您想要为项目存储多个属性。为此,如果要使用关系数据库,请使用entity-attribute-value pattern。 eav-django为django提供了这种实现。
然而,更灵活(也不那么麻烦)的方法是使用文档数据库(如沙发)或其他NoSQL解决方案。它们提供了灵活的模式,因此您不必担心必须存储多少“属性”或“元数据”。
问题的另一部分是维护与 n -depth的关系树。这是使用nested set model(也称为修改的预订树遍历)实现的。和eav一样,有django-mptt。