版权所有, 转载请保留连接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 添加修改控制
使用mahout机器学习改进solr查询结果
Apache Solr lucene 搜索模块设计实现 Solr 模块 架构 lucene 搜索
基于Solr的搜索引擎的设计与实现
讲述了如何利用mahout机器学习改进solr查询结果
ES和solr都是基于Lucence的搜索框架,文档比较2中方案适合的不同场景和优劣
Apache Solr 搜索架构分析外部设计篇PDF Solr 源码 架构 分析 搜索
solr.warsolr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包solr.war包...
solr搜索引擎,solr介绍什么是solr搜索引擎,操作实例
后台缓存热启:当一个新的搜索器被打开时,可配置的搜索将它热启,避免第一个结果慢 下来,当热启时,当前搜索器处理目前的请求(???)。 后台自动热启:当前搜索器缓存中最常访问的项目在新的搜索器中再次生成,能够在...
solr
solr
我们网站搜索如果数据量大的话,我们使用数据库直接查搜索会很慢,而且由于不能自动分词,结果往往不是很理想,现在我提供了一个例子,内含详细操作步骤和简单增删改查 Solr是一个独立的企业级搜索应用服务器,它...
solr搜索服务器安装配置--资料备份
solr搜索引擎支持分页 有问题可以QQ(271287607)
使用Solr实现电商网站中商品信息搜索功能。 1、 可以根据关键字搜索商品信息 2、 可以根据商品分类、价格过滤搜索结果 3、 可以根据价格进行排序 4、 实现分页
Solr 是一个可供企业使用的、基于 Lucene 的开箱即用的搜索服务器。
solr文档
sorl搜索引擎安装与文件,Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。
基于Solr的企业级信息检索的设计与实现