【问题标题】:How to implement search feature based on user permissions with Laravel Scout如何使用 Laravel Scout 实现基于用户权限的搜索功能
【发布时间】:2019-08-20 20:24:10
【问题描述】:

我正在尝试构建一个搜索功能,允许用户搜索他们有权访问的所有文件。到目前为止,我已经尝试使用 Scout,但它似乎不适用于那些复杂的请求。我看到的许多关于 Scout 的示例大多都是微不足道的,例如,您有一个博客并且您想按名称搜索博客文章而不包含未发布的文章的用例。但这并不取决于登录用户的访问权限。根据用户搜索,您可能有不同的索引的情况如何?

这是我希望实现的具体示例。

在这张图片中,我们展示了可以访问不同项目的用户以及其中包含多个文件的项目。在此示例中,用户 W 可以访问项目 A 和项目 B,因此可以访问文件 A 到 E。当用户 W 在 Web 应用程序上搜索时,文件 F 永远不会出现在搜索结果中。

  • 用户 X 应该看不到任何文件结果
  • 用户 Y -> 文件 A 到 F
  • 用户 Z -> 文件 D 到 F

Laravel Scout 是否适合这种高级搜索功能?

如果没有,你如何实现这样的功能?我应该从哪里开始?

【问题讨论】:

    标签: laravel search laravel-scout


    【解决方案1】:

    我相信您的情况不需要多个索引。只需将 'project_name field' 添加到您的文件 doc 或生成多个字段,如 project_a: true。然后像File::search('project_a = true')这样构建搜索

    您可以使用这个包来构建复杂的查询,甚至可以搜索多个索引 https://github.com/matchish/laravel-scout-elasticsearch

    【讨论】:

      猜你喜欢
      • 2021-04-04
      • 2021-12-26
      • 1970-01-01
      • 2021-01-09
      • 2015-09-24
      • 1970-01-01
      • 1970-01-01
      • 2018-07-17
      • 1970-01-01
      相关资源
      最近更新 更多