有一个项目目录。每个项目都位于类别下。对于每个类别,我们可以拥有具有不同权限的用户(管理员、专家、用户)。添加项目时,我们选择可见性:(1) - 对所有人可见 (2) - 仅对发布此项目的类别的管理员和专家可见 (3) - 对发布此项目的类别的所有成员可见(0) - 对所有人隐藏(只有创建者可以看到)。
假设我有 500 个标题中带有“键盘”一词的项目。他们中的大多数属于不同的类别。500 篇论文中只有 1 项具有隐私权 - 2 项(该类别的专家和管理员可见)并位于“罗技”类别下。当我作为“Logitech”类别的管理员在搜索中键入“键盘”时,我应该看到搜索找到了 500 个项目,并显示其中的 10 个。如果只是一个普通用户(不是管理员或专家),在他将看到的搜索中键入“键盘”,搜索找到了 499 个项目,并向他显示了这 499 个项目中的 10 个。
抓取 20 个项目而不是 10 个项目并检查每个项目的隐私,然后在搜索结果中仅显示 10 个项目是唯一可能的解决方案吗?但是,如果这 20 个都“为用户隐藏”呢?
提前感谢您的回复。
数据库草图:
1)items[id, title, category_id, visibility]
2) 类别:[id, title]
3) category_user[id, user_id, category_id, role(expert, admin, user)]
4) 用户[id, name]