【发布时间】:2012-11-08 00:42:52
【问题描述】:
我正在为特定主题的社交互动建立一个网站,基于线程,想想 gmail,只公开。词汇表中也会有一些静态信息,还有博客、how-tos、知识库等。就是django+postgres。
最重要的要求之一是对所有信息进行全文搜索,无论模型的类型如何。如果确切的搜索短语出现在博客中,并且其扭曲的姐妹出现在消息中,则博客条目中的 sn-p 应该首先出现在搜索结果中,然后是消息中的 sn-p。所以,我需要一个包含所有文本索引的表,以及 db 中 _any_other_table_ 的链接。
我的第一个想法是创建一个带有“松散参考”的单独模型,例如:
class Content(models.Model):
obj_id= CharField() # An id of the object of a given model.
model= CharField(choices=("Message", "BlogEntry", "HowTo", "EntityProfile",))
content_type= CharField(choices=("subject", "body", "description", "tags",))
body= TextField()
但这感觉有点不对劲……这会在创建和重新链接实例时为引用的完整性带来不必要的麻烦。
所以,问题是 - django 会提供任何优雅的解决方案吗?解决该问题的最有效架构可能是什么?
我不是要直接回答,而是要一个提示。
提前致谢!
【问题讨论】:
-
您在寻找这个docs.djangoproject.com/en/dev/ref/contrib/contenttypes 吗?也不要将
CharFields用于对象 ID。另外你的choices错了,一定是2元组的元组。 -
是的,我知道,只是简化了一切。感谢您的提示,现在检查一下!
-
我使用 SOLR 进行搜索,文本字符域。 Solr
标签: django postgresql database-design full-text-search