本文期望从IT专业人士以及开发者两个角度了解SharePoint2010搜索能够提供的服务,IT专业人士角度的内容会先提供,笔者会在整理理解完SP2010提供的功能之后再从开发者角度来予以阐述、梳理。
内容存储:
SharePoint 2010 Foundation只能够在同一个服务器场内部爬网,但SharePoint 2010 Server还有Fast Search Server 2010 For SharePoint可以在以下数据结构内部盼望:
- SharePoint站点(同一个服务器场内或者外部服务器场);
- Windows共享文件
- Microsoft Exchange的公共文件夹
- 非SharePoint站点的web站点
- 员工档案
- 外部商业系统
- 数据库里存储的结构化数据
- Web服务返回的数据
- 第三方产品和平台例如Louts Notes和Documentum
在搜索外部系统的时候,可以通过自定义的连接器来提供对外部系统数据以及架构的解析,在上一个版本中只能通过非托管的C++语言,而在2010里面,可以使用简单如SharePoint Designer 2010来创建外部内容类型、数据库实体、web服务实体然后来爬网这些实体,也可以使用Visual Studio来开发。
索引规模:
- 虽然没有hardcode的索引规模限制,但是从实际性能角度考虑:
- Search Server 2010 Express和SharePoint Foundation 2010可以索引和搜索最多300,000条数据如果使用SQLExpress,或者可以索引和搜索最多1000万数据如果使用SQL Server2008完整版;
- 2. Search Server 2010和SharePoint Server 2010可以搜索多至1亿数据;
- 3. FAST Search Server For SharePoint 2010可以支持非常大的规模,多至10亿数据;
SharePoint Server 2010企业级搜索的一个重要目的就是为所有搜索提供Sub-Second Query Latencies(没想到合适的中文翻译)。为了达到这个目的,必须要保证每个query服务器的搜索数据不会超过1000万,可以通过增加多台query服务器到服务器场中来实现更多数据的搜索,这点利用了索引分区的特性,SharePoint 2010使用每个文件的ID的Hash来鉴定使用哪台服务器来进行查询,而查询对象模型(http://msdn.microsoft.com/en-us/library/ee557319(office.14).aspx)也会搜集并整理来自所有Query服务器的结果汇总显示给用户。
SharePoint2010搜索新特性:
列举一些微软提供的关于新特性的描述,从个人角度来看其实也没有什么太大的对用户有意义的改进。很多用户需要的搜索其实很简单,比如按照元数据来检索数据就可以,但SharePoint的搜索引擎过于复杂,语义的推定、对Office文档本身元数据的提取等,很多时候我们需要了解的是搜索引擎的查询API到底提供了什么样的功能,这样开发人员就可以订制搜索来满足用户的需求。
言归正传,于SharePoint2007相比,在查询方面2010做了不少的改进:
- 布尔查询:可以在查询框里面输入布尔表达式,例如(“SharePoint Search” ‖ OR “Live Search”) AND (title:“Keyword Syntax” OR title:“Query Syntax”);
在查询结果方面也做了不少改进:
- 查询结果的显示(和上个版本类似)以及进一步的缩小搜索结果(refine);
- 在浏览器里查看文件(需要安装Office web app,Excel Service不需要单独安装,但默认的版本只有浏览功能,不能编辑),关于Office web app更多,请参考:
http://technet.microsoft.com/en-us/library/ff431687.aspx;
人员信息搜索:
- 结果相关性得到了改善,特别是对姓名和专业知识的搜索;
- 搜索自己;
- 姓名模糊查询(目前只适用于部分语言)、昵称查询
搜索结果的相关性改善:
- 通过点击历史来排名,如果查询结果被点击的的越多说明受关注的越多从而越会出现在结果的靠前位置;
- 文档元数据:SharePoint2010会通过文档中的关键字如“By John Doe”来推断文件的作者,同时也会考虑在文档自身所携带的元数据例如author,两者都会在搜索结果中予以反映;
性能、可靠性的改善:
在2007里面一个SSP只能配置一个索引器,但在2010里面可以配置多个,当然2010里面的Search Service applicaiton是独立的,2010里面也已经没有SSP的概念);
在2010里面查询服务器也可以配置多台
最后,提几点在2010里面搜索配置方面的改进:
Crawler Impact Rules: 这个新东西没来得及玩,简单的翻译一下来自官网的说法:这个规则定义的是在站点正在被爬网时候同时文件请求的个数以及请求之间的延迟时间。如果没有设置该规则,同时请求文件数根据硬件资源在5与16之间。有篇文章讨论了如何利用这个规则来改进性能,没有细看,有兴趣的同志可以参考参考:http://sharepoint.microsoft.com/Blogs/fromthefield/Lists/Posts/Post.aspx?ID=96
权威性页面(Authoritative Page):简而言之这个设置是用来设置搜索的权威性,从而影响其在搜索结果里的排名,有兴趣请参考TechNet: http://technet.microsoft.com/en-us/library/cc262796.aspx
Federated Search: 这个在2007里面就有了,我们曾经做过一个项目就是在公司所有的四个区域Farm里面的Search Center里提供搜索其他三个Farm内容的功能就是通过这个特性,这个特性还可以用在对外部搜索服务的使用上,例如Google News, Live News等。