我正在构建网络应用程序并使用 django 和 Sphinx 进行自由文本搜索。在向 searchd 发出请求之前,我需要应用额外的限制,请考虑 2 个表:
实体
ID
标题
描述
created_by_id
updated_by_id
created_date
updated_date
和
EntityUser
id
entity_id [FK to the table]
join_user_id
is_approved
created_by_id
updated_by_id
created_date
updated_date
我已经为主表实体建立了 RT 索引,一切正常,但是我想只对用户加入的那些实体进行查询,即特定 user_id 和 entity_id 在 EntityUser 中存在 is_approved=1 的记录。问题是我无法索引 EntityUser,因为没有字符串字段 - 如您所见,此表仅包含整数/时间戳。不确定我是否可以在 SphinxQL 中进行包含对另一个 idex 的子查询的查询,即使我可以为该表构建索引。知道 Sphinx 被用于相当大的项目并取得了巨大的成功,我怀疑这是 Sphinx 的一个限制 - 是数据库/应用程序的糟糕设计还是如何构建适当的 RT 索引的知识泄漏?我可以以某种方式扩展现有索引,以便可以使用上面的限制吗?
我在想我可以在 Sphinx 返回 MySQL 端的记录 ID 后应用额外的限制,但这不起作用:将返回 N 条权重最高的记录,但在应用额外的限制后,结果可能为空。所以我需要获得一个搜索区域,然后只对用户可能看到的那些实体执行查询。