`
一江春水邀明月
  • 浏览: 79015 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Solr搜索结果ACL 控制另类设计

 
阅读更多

版权所有, 转载请保留连接http://wangbt5191-hotmail-com.iteye.com/blog/1734160

问题提出

在某人的前东家那里, 在企业级别协作平台中, 文档是是管理在内容容器中, 这个内容容器可以是community 和project, 类似于Jive 的管理方式。

1. 容器以及容器的描述信息可以对容器外用户搜索开放, 以方便用户发现更多的容器;

2. 容器中的内容希望对容器外的用户搜索封闭, 以保护容器中的文档信息不会被较低权限的人所看到。

比如我们有如下组织的内容容器



-Company A (community)
  --Department RD(community)

    --- Department Dev (community)

         ---- Front End Team (community)

              ----Project web component 1.0

              ----Project Appllo Front End(project)

         --- Server Team(community)

              ----Project Appllo Server End(project)

              ----Project Search Engine Refactor(project)

    --- Department Testing (community)
       ---- Project Appllo Testing (project)

    --- Architecture Team (community)
  --Department Sales(community)


-Company B (community)

    这里我们假设A 公司有研发经理他是需要能够查看整个RD 社区下的内容, 又有Appllo 开发参与了项目Appllo 需要能够查看 Project Appllo Front End, Project Appllo Server End 和 Project Appllo Testing的内容。

方案


在内容创建的时候, 比如我们在Project web component 1.0 下新建一个文档, 那么它在容器管理中的路径应该是 Company A/Department RD/Department Dev/Front End Team/Project web component 1.0, 在文档创建索引的时候, 就带上Path 这个属性, 并且对path 进行索引。 当搜索要求到来的时候,业务调用方需要告诉搜索引擎当前用户所能看到的容器权限。 那么上文提到的研发经理, 那么他能够看到path Company A/Department RD 下的所有文档, 那么我们在搜索query中附加条件是 path:"epartment RD", Appllo 开发人员, , 我们在搜索query 中的附加条件是 path:"Project Appllo Front End" OR path:"Project Appllo Server End" OR  path:"Project Appllo Testing"

设计约束:

1.需要业务系统管理整个容器权限
2. 用户登录以后获取用户在整个系统中的权限树并存储在缓存中
3. 用户在添加文档的时候, 系统往搜索引擎中推入文档数据不需要考虑用户的权限, 只需要保存文档本身的信息,包括文档在系统中的目录结构
4. 用户在搜索的时候, 需要附加用户可见的所有子节点目录, 如果某节点下的所有子节点用户都可见, 那么只需要给出这个当前节点。 举例:
     假如有用户他有对以下容器的读权限 Company A/Department RD/Department Dev/Front End Team/Project web component 1.0 和Company A/Department RD/Department Dev/Project Appllo Front End, 那么我们只需要给搜索引擎 Company A/Department RD/Department Dev/Front End Team 就好了

5. 通过一定规则保证容器名(容器ID)之间不会出现重复。

对于数据变动的影响:

1. 用户在应用系统中的角色权限发生变化, 我们不需要对已经生成的文档进行重新索引
2. 应用系统中的容器隶属关系发生变化, 比如我们这个时候Company A把Company B收购过来了, 那么我们需要对相关变化的容器中的文档进行全部重新索引, 也就是需要把Company B 的内容容器中的文档进行索引重建。

分享到:
评论

相关推荐

    solrcore 添加修改控制

    SolrCore是Apache Solr搜索引擎中的核心组件,它包含了索引、查询和其他功能。当我们谈论“SolrCore的添加和修改控制”时,我们主要关注如何在Solr中创建、配置、更新和管理SolrCore,以及如何实现对这些操作的安全...

    Apache Solr lucene 搜索模块设计实现

    Apache Solr 和 Lucene 是两个在全文...总的来说,Apache Solr 和 Lucene 提供了一套完整的解决方案,能够设计和实现复杂的企业级搜索系统。通过理解这些核心概念和技术,开发者可以构建出满足各种需求的高效搜索引擎。

    solr搜索引擎的使用介绍

    Solr搜索引擎的使用介绍 Solr,全称为Apache Solr,是Apache软件基金会的一个开源项目,基于Java开发,是一款高效、灵活且强大的全文检索服务引擎。它构建在Lucene库之上,提供了更高级别的企业级搜索功能,如...

    基于Solr的搜索引擎的设计与实现

    基于Solr的搜索引擎的设计与实现

    solr-7.1.0.zip solr搜索引擎安装包

    同时,Solr还支持实时更新和删除操作,使得搜索结果始终与数据源保持一致。 在运行Solr服务器后,可以通过Web界面(默认地址:http://localhost:8983/solr)进行管理和查询。Solr提供RESTful API,可以用任何编程...

    solr搜索自动补全

    Solr搜索自动补全是现代电商网站常见的一项功能,它能够显著提升用户体验。当用户在搜索框输入关键词时,系统会根据输入的文字,实时展示一个下拉列表,该列表包含用户可能想要搜索的查询项。这不仅可以引导用户更快...

    ES和solr搜索方案对比

    ES(ElasticSearch)和Solr都是基于Lucene的搜索引擎,它们各自提供了一套搜索框架,用于实现高效的全文搜索功能。由于两者都是在Apache License 2下开源的,因此在选择使用哪种搜索方案时,需要根据不同的使用场景...

    solr搜索引擎

    Solr搜索引擎是一款强大的开源全文搜索和分析引擎,由Apache软件基金会开发并维护。它主要设计用于处理大量数据的高效检索,支持多种数据源,并提供高度可扩展性和容错性。在深入探讨Solr之前,我们先来理解一下什么...

    solr实现京东搜索

    除了基本功能,Solr还可以实现如拼音搜索、同义词扩展、高亮显示搜索结果、相关性评分等高级特性,进一步提升用户体验。例如,通过添加拼音分析器,用户可以用汉字拼音进行搜索;利用Solr的自定义相似度函数,可以...

    基于Solr的企业级信息检索的设计与实现

    基于Solr的企业级信息检索设计与实现的知识点主要包括以下几个方面: ### 1. Solr概述 Solr是Apache基金会下的一个开源项目,它基于Lucene全文检索工具包,提供了更为高级且可定制的企业级搜索解决方案。Solr用...

    Apache Solr(solr-8.11.1.zip)

    9. **安全与认证**:Solr 8.x引入了内置的安全性框架,包括Zookeeper的ACL和Solr的Role-Based Access Control (RBAC),为用户提供了一种保护Solr集群的方式。 10. **JMX监控**:Solr支持Java Management Extensions...

    solr搜索服务器安装配置

    ### Solr搜索服务器安装配置详解 #### 一、Solr简介 Apache Solr是一款开源的高性能全文搜索引擎,基于Lucene库构建。它采用Java开发,提供了丰富的API接口,支持多种编程语言,使得开发者能够轻松地集成搜索功能到...

    solr搜索插件

    Solr搜索插件是基于Apache Solr开发的一款用于高效关键词搜索的工具,它极大地提升了数据检索的速度和准确性。Apache Solr是一款开源的企业级全文搜索引擎,它由Java编写,设计目标是提供快速、可扩展的近实时搜索...

    solr-6.2.0源码

    7. 高亮显示:Solr可以高亮显示搜索结果中的关键词,提高用户体验。 三、Solr 6.2.0的改进与新特性 1. 改进的ShardHandler API:增强了对请求的并发处理能力,提高了性能。 2. 引入了新的查询执行模型(Distributed...

    solr搜索引擎支持分页

    Solr搜索引擎支持分页是其核心特性之一,它在处理大量数据检索时,为了提高用户体验,提供了高效且灵活的分页解决方案。Solr是基于Java的开源全文搜索服务器,采用了Apache Lucene作为其核心搜索引擎库。Lucene是...

    solr服务器_solr_

    8. **Faceting**:Solr提供分面搜索功能,允许用户通过分类或统计方式查看搜索结果的不同方面,如按照品牌、价格区间等进行筛选。 9. **Highlighting**:高亮显示是Solr的一项特性,它可以在搜索结果中突出显示匹配...

    solr7.5搜索框架

    9. **实时搜索**:Solr 7.5 支持实时索引和查询,一旦数据被添加到索引,立刻可以在搜索结果中看到。 10. **安全与权限控制**:Solr 7.5 提供了基本的安全性和权限控制功能,如SolrCloud的Zookeeper配置节点可以...

    solr 企业搜索引擎教程

    ### Apache Solr 企业搜索引擎教程知识点总结 #### 1. Apache Solr 概述 - **Solr**:Apache Solr 是一款高度可扩展且高性能的企业级搜索平台,由Apache软件基金会维护。它是一个开源搜索服务器,使用Java语言编写...

Global site tag (gtag.js) - Google Analytics