Python 使用全文搜索在数据库中存储长文本和表格文档的最佳方法是什么

Python 使用全文搜索在数据库中存储长文本和表格文档的最佳方法是什么,python,django,postgresql,Python,Django,Postgresql,我的应用程序存储了数百万份法律文件,从1页到3000页不等。当前我的模型如下所示: class Document(models.Model): title = TextField() content = ArrayField(TextField()) search_vector = SearchVectorField(null=True) doc = Document(title="Legal brief", content=["page

我的应用程序存储了数百万份法律文件,从1页到3000页不等。当前我的模型如下所示:

class Document(models.Model):
    title = TextField()
    content = ArrayField(TextField())
    search_vector = SearchVectorField(null=True)
doc = Document(title="Legal brief", content=["page 1 text...", "page 2..."])
因此,示例文档用例如下所示:

class Document(models.Model):
    title = TextField()
    content = ArrayField(TextField())
    search_vector = SearchVectorField(null=True)
doc = Document(title="Legal brief", content=["page 1 text...", "page 2..."])
使用数组的原因是我在应用程序的每一页底部都包含了一个带有页码的HTML水平行

然后,我使用一个自定义Postgres触发器函数,它使用
数组到字符串
函数将页面列表滚动到单个
tsvector
中,并保持
搜索向量
字段更新以进行全文搜索和排名

我的问题是我是否应该重构我的模型以包含一个
页面
对象,并将每个文本页面存储在一个单独的对象类型中?用例是这样的,我永远不会单独访问一个页面,文档一旦创建就是静态的——它们永远不会改变。我主要关心的是尽可能快地进行搜索,尤其是在整个数据库中(所有数百万个文档),我次要关心的是我的文档中有一小部分非常长(1000多页),并且不符合
SearchVectorField
字段长度的
4mb
限制,可能会以我不完全理解的方式降低DB性能。该网站在EST营业时间使用量很大,因此效率很重要

我正在使用PostgreSQL 10(Aurora serverless)和Django 3.2。先谢谢你