我正在建立一个基于线程的特定主题的社交互动网站,想想gmail,只有公共的。词汇表中也会有一些静态信息,还有博客、how-tos、知识库等。就是django+postgres。
最重要的要求之一是对所有信息进行全文搜索,无论模型的类型如何。如果确切的搜索短语出现在博客中,并且其扭曲的姐妹出现在消息中,那么博客条目的片段应该首先出现在搜索结果中,然后是消息的片段。所以,我需要一个包含所有文本索引的表,以及 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 会提供任何优雅的解决方案吗?解决问题的最有效架构可能是什么?
我不是要直接回答,而是要一个提示。
提前致谢!