我有一个包含 35 个字段(Char、Int、Bool、Dec、M2M、FK)的 UserProfile 模型。作为搜索视图功能的一部分,其中一个字段需要全文搜索,而其余 34 个字段将用于提供“高级搜索过滤”(使用:__gte、__lte、__exact、__in、__startswith)。“搜索”查询可以使用 5-35 个字段作为搜索视图标准。
我正在使用 haystack 构建 SearchIndex,目前已添加所有 35 个字段,但这似乎无效,因为我绕过了 django ORM(?)。
来自过滤 Django Haystack 结果的答案,如 QuerySet?建议我可以只将单个全文搜索字段存储在 SearchIndex 中,并将 SearchQuerySet 与 django 的 QuerySet 组合用于剩余的 34 个过滤器字段。然后我会在我的 django 模型中的部分或全部这些字段上使用 db_index=True 吗?使用这种 2 阶段查询合并方法是否可以很好地扩展到数千个结果?
由于我的 UserProfile 模型可能增长到 300K-2M 条目,我试图了解如何最好地索引这个模型。作为数据库索引和搜索的新手,我正在寻找有关如何最好地优化我的数据库的任何见解。