最近接到的任务是搜索平台模块需求研究,网上搜到佛山一家专做企业搜索的公司开源的一个工程R3。关于起点R3企业搜索的相关介绍如下:
起点R3企业级搜索引擎是起点软件提供的企业搜索解决方案,支持企业环境下的数据访问控制(ACL),能够通过定义用户数据访问权限来控制检索数据的安全。
R3是一个强大的,高性能的JAVA企业级搜索引擎产品,R3构建于Solr和Lucene之上,集成了POI、PDFBox和Apache Tika等第三方开源项目,在R3企业级搜索平台上,你可以搜索出你企业所有相关的内容包括网站、邮箱、ECM, CRM。R3使用一中新的集群模式来实现分布式和集群功能,通过扩展计算能力,R3能够支持上千G文档,完成复杂的并行运算;R3能够以集群模式运行来提高系统的可用性。它支持超过15种语言的多语言搜索,能够集成文档自动分类和聚类功能,能够为文档自动、智能的添加标签和关键字。可以通过采集器为索引库定制数据来源,采集器通过插件的方式扩展。默认提供数据库、邮件、本地文件系统、网络文件系统、FTP、Domino、CSV、Access的采集器。R3基于Solr之上,所以在Solr中的层面搜索、同义词等都被完整的保留了下来。R3通过作业调度系统实现了任务的自动化采集、能够增量索引,支持数据更新,能够通过可视化的方式对索引字段进行管理。R3具备用户和用户组管理,R3可以对数据类型定制,支持分词器、过滤器、缓存管理。R3能够很容易的集成Hadoop和HBase。此外它还开发多种编程语言的API包括:Ruby、PHP、Java、Python、JSon、C#、ColdFusion。R3具有以下特性:
1.索引快-索引10G文档只要0.5个小时。
2.能够可视化的采集企业中的大部分数据
3.采集能力能够扩展到企业的全部数据
4.支持绝大部分文档格式,并能够通过插件扩展
5.支持高达255T的海量数据,并支持分布式存储和分布式运算
6.支持自定义任务计划和采集效率
7.支持自定义的企业数据安全访问控制(ACL)
8.强大集成能力,可以支持企业系统中的各种用户系统和权限系统
9.强大快速的搜索功能,支持关键词搜索、时间搜索、范围搜索,支持主题分类和概念检索
10.超过10T的数据,大部分检索时间在0.5秒以内
11.完全中文的企业级搜索系统
12.在同一个系统中,不用角色的用户可以访问不同的检索界面
13.自由定制、自由扩展
您可以通过http://demo.rivues.com:93 访问起点R3的Demo
您可以通过http://www.rivues.com访问起点R3其他信息
或者到SourceForge http://sourceforge.net/projects/rivues/ 下载产品和源码
从http://sourceforge.net/projects/rivues/上下载源码后,下面本人来叙述一下在windows系统下如何把代码导入eclipse中并部署到tomcat下以及一些自己的初步感受。
解压qidian_esp-r3_v5.1.0_src.zip,可以看到三个目录分别如下:
在eclipse下新建一个web工程命名为R3(以下简称工程R3),把qidian_esp-r3_v5.1.0_src压缩包里src目录下的所有文件拷贝到工程R3下的src目录下;qidian_esp-r3_v5.1.0_src压缩包r3/webapps/ROOT所有文件拷贝到工程R3下的WebRoot目录下。
最后在eclipse部署中到tomcat下即可。
【注意事项】:
您主要关注的是src目录下的applicationContext.xml配置文件,可配置数据库连接方式,主要代码如下:
默认它配置的连接apache网站上提供的开源数据库Derby,所以您可以不需创建数据库直接启动tomcat即可让工程跑起来。
当然您可以修改以下几行配置文件:
<bean id="dataSource"
class="org.rivu.core.datasource.RivuDataSource">
<property name="driverClassName" value="org.apache.derby.jdbc.ClientDriver" />
<!--<property name="username" value="root" />
<property name="password" value="123456" />-->
<!--<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test" />
<property name="username" value="root" />
<property name="password" value="123456" />-->
</bean>
可注释掉<property name="driverClassName" value="org.apache.derby.jdbc.ClientDriver" />
行并去掉bean标签id为dataSource里面的注释代码换成您要连接的数据库相关的配置。
同时<prop key="hibernate.dialect">org.hibernate.dialect.DerbyDialect</prop>行配置对应数据库的方言。
在IE浏览器地址栏输入http://localhost:端口号/即可进入登陆界面。可以看到其与起点搜索公司网站提供的在线体验演示界面一样的。下面就自己去体验以下吧!^_^
暂时先研究到这里,现在说说我的一些使用体会:
看了其公司提供的白皮书,上面提到对于安全性:
起点企业搜索产品具备了整合企业环境中各种复杂用户系统、权限系统的能力,不用对已有系统做任何修改,ESP-R3 V4.0都可以完完整整的将其用户系统和权限系统集成进来,并将用户数据和权限数据应用在检索结果上,这个能力将全面保证用户检索的数据是经过授权的,能够合法查看的数据。
做过企业搜索的都知道,其与互联网搜索最大的区别就在于其对于搜索权限有着特别严格的要求。也如该白皮书上说道的安全是企业搜索成败的关键。这也是我在做搜索中遇到的一个最难解决的难题。虽然其白皮书上提到具备了整合各种复杂用户系统、权限系统,但是通过使用发现其只是简单地对文本的搜索权限定义了5种等级。在“文本采集”的时候就定义这批文档的搜索权限等级是几级,而在“用户和角色管理”则提供了该用户可以访问几级的文档,这样来实现对搜索安全性的控制管理。至于其中的I/II/III/IV/V各代表什么意思,没从文档中找到答案。
这种解决安全性方法也是一些论文中提到的关于企业搜索权限控制的解决方案,但是还是无法满足本人目前系统中的需求。至于其非开源版本是否实现了真如其文档中提到的安全性要求,那本人就不得得知咯,呵呵。
代码是开源出来,但是api之类的文档却需要money才能看到有点小遗憾。虽然是有点像带着商业广告性质开源,但是还是非常感谢其贡献出来。也算是对于本人这种人提供了学习的资料。O(∩_∩)O哈哈~