SharePoint 2013 开发——搜索架构及扩展

??博客地址:http://blog.csdn.net/FoxDave

SharePoint 2013高度整合了搜索引擎,在一个场中只有一个搜索服务应用程序(SSA)。它集成了FAST,只有一个代码库,不同的授权层次启用不同的搜索功能,但是有些功能在云端是不可用的。

下图从开发者的视角展示了搜索架构,摘选自SharePoint高级编程。

图中标记灰色的部分就是我们在开发过程中可以应用或扩展的部分。我们可以通过REST或CSOM API来对查询模块进行定义和扩展;通过BCS来创建新的索引连接;借助内容扩充Web服务(CEWS)API来扩展内容处理模块。

下面我们具体来看一下搜索中可扩展的点。

界面UI:

●Web部件,主要体现在内容搜索Web部件

●结果展示模板

●导航设置

查询:

●查询语法(KQL和FQL)

●查询APIs(REST和CSOM)

●查询规则

内容和元数据:

●搜索架构

●结果源

●业务数据连接(BCS)

●内容处理(CEWS)

相关性和语言学:

●排名属性

●权限

●术语集和字典

●语言学(如分词算法)

●分析

而我们常接触到的开发场景并不是以上全部,一般常做的开发场景有如下几个:

●修改终端用户体验,展示特定的信息;

●为特定的产业、部门,甚至是话题和角色创建新的垂直搜索应用程序;

●创建一个新的可视化元素添加到标准的搜索中;

●修改查询和索引

●创建新的搜索驱动的网站和应用程序

SharePoint 2013的搜索相关的内容个人认为是比较高深的,需要花费大量的时间好好钻研。

本篇的最后我们来一起学习一下如何使用Content Enrichment Web Service,参考一位外国友人的例子。

通过CEWS我们可以扩展SharePoint 2013的搜索功能,将托管属性的值发送到外部的Web服务并返回新的或经过修改的托管属性。这个过程包括实现一个自定义的WCF服务并使用PowerShell注册它,通过PowerShell命令来指定哪些属性进出该WCF服务。

本例中将采用Author和LastModifiedTime这两个托管属性,然后编写一个新的字符串如“Modified by <author> on <LastModifiedTime>.”到托管属性TestProperty。

首先创建这个托管属性TestProperty,类型为Text,属性有Query、SSearch、Retrieve和Refine。进入到SharePoint的网站设置页面,单击网站集管理->搜索架构,单击新建托管属性,填写名称为TestProperty,勾选查询、搜索、检索和优化,单击确定按钮完成创建,如下图所示。

接下来打开Visual Studio 2013,创建一个WCF应用程序项目叫做ContentEnrichmentExampleService

随项目默认创建的Service1.svc和IService1.cs没有什么用,我们直接删除之。向项目中添加引用,浏览,导航到目录C:\Program Files\Microsoft Office Servers\15.0\Search\Applications\External,添加microsoft.office.server.search.contentprocessingenrichment.dll。

下面我们需要创建一个服务来做内容扩充处理这件事,向项目中添加一个新建项WCF服务,取名做ContentEnrichmentExampleService.svc。本例中不需要IContentEnrichmentExampleService.cs,故将它删除掉。现在我们可以打开创建服务的后台代码文件添加我们自己的代码了,代码主要实现的功能为检索输入的属性值,创建我们新的输出属性TestProperty并发回给搜索索引。

在代码头添加两个using引用

using Microsoft.Office.Server.Search.ContentProcessingEnrichment;
using Microsoft.Office.Server.Search.ContentProcessingEnrichment.PropertyTypes;

将类的基类改为IContentProcessingEnrichmentService,添加一个ProcessedItem类型集合来保存从服务输出的托管属性值。

然后实现ProcessItem方法,声明我们创建的自定义属性并根据传入的值将TestProperty的值拼接出来,完整的代码如下所示:

public class ContentEnrichmentExampleService : IContentProcessingEnrichmentService
    {
        private readonly ProcessedItem processedItemHolder = new ProcessedItem
        {
            ItemProperties = new List<AbstractProperty>()
        };

        public ProcessedItem ProcessItem(Item item)
        {
            processedItemHolder.ErrorCode = 0;
            processedItemHolder.ItemProperties.Clear();

            //创建一个新的托管属性作为返回值,该属性必须通过PowerShell注册为输出属性
            var testProperty = new Property<string>();
            testProperty.Name = "TestProperty";

            //需要通过PowerShell注册为输入属性
            var authorProperty = item.ItemProperties.FirstOrDefault(i => i.Name == "Author") as Property<List<string>>;
            var writeProperty = item.ItemProperties.FirstOrDefault(i => i.Name == "LastModifiedTime") as Property<DateTime>;

            if ((authorProperty != null) && (writeProperty != null))
            {
                testProperty.Value = string.Format("Modified by {0} on {1}.", authorProperty.Value.First(), writeProperty.Value);
                processedItemHolder.ItemProperties.Add(testProperty);
            }
            else
            {
                testProperty.Value = "检索托管属性出错。";
                processedItemHolder.ItemProperties.Add(testProperty);
            }

            return processedItemHolder;
        }
    }

接下来需要将这个服务注册到SharePoint,使用PowerShell命令New-SPEnterpriseSearchContentEnrichmentConfiguration进行注册,注册完之后运行一下完全爬网。通过访问http://server/_api/search/query?querytext=‘*‘&selectproperties=‘title,path,author,testproperty‘可以验证我们上面的操作是不是都正确,如果正确将会返回属性TestProperty的服务中定义的字符串格式的值。

更多信息

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-10 03:17:27

SharePoint 2013 开发——搜索架构及扩展的相关文章

SharePoint 2013 企业搜索架构示例

??博客地址:http://blog.csdn.net/FoxDave 本文参考自微软官方的Chart,我们来看一下企业中对于不同规模SharePoint搜索的场的架构是什么样的. 对于搜索场的规模,我们用爬网的Item的数量来衡量.关于搜索过程和搜索组件的交互信息,查看Search Architectures for SharePoint®  Server 2013. 搜索中的数据库有以下四个角色: 1. 搜索管理数据库(Search administration database) 存储搜索

SharePoint 2013 开发——工作流架构

博客地址:http://blog.csdn.net/FoxDave SharePoint 2013的工作流较之前有了不同,第一次真正地作为独立的服务的概念推出了.这意味着SharePoint工作流不再运行于SharePoint服务中,而是在一个独立的服务器(Windows Azure Workflow场)处理.新的工作流架构基于Windows Workflow Foundation 4.0和.NET Framework 4.5,它们较之前的版本都有了很大的改进. SharePoint 2013工

SharePoint 2013 开发——概述

?? 博客地址:http://blog.csdn.net/FoxDave 近来阅读SharePoint 2013开发一书,带着与大家一起分享其中的内容. 部署场景: 本地部署(On-Premise Deployment).O365部署(Office 365 Deployment).托管部署(Hosted Deployment)和混合部署(Hybrid Deployment). 包场景: 完全信任的场解决方案(Full-Trust Farm Solution).部分信任的沙盒解决方案(Partia

SharePoint 2013 禁用搜索服务

原文:SharePoint 2013 禁用搜索服务 前言,在SharePoint2013中,对于硬件需求的提升,让我们虚机里安装总是一筹莫展,尤其开启了搜索服务以后,对于内存的消耗就更加严重,尤其对于我们开发者来说,搜索服务并不是必须开启的,所以,我们需要禁用掉不需要的服务,来减轻开发环境的压力. 首先对比一下是否开启搜索对于服务器内存的压力 特别要说,笔记本配置Dell1464,CPU:I5 M430,内存:4GB ddr3 1333 X2条. 不开启搜索时任务管理器,内存占用46%,机器运行

BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发人员工具 SharePoint中基于Web开发

BEGINNING SHAREPOINT? 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发人员工具 SharePoint中基于Web开发 之前提到过,定义SharePoint开发有多种方法.作为高级用户,你可能使用更多原生SharePoint功能在基于Web环境做开发.高级用户典型地在SharePoint站点有逐步上升的权限,并且能够完成以下任务: 创建和管理网站集与网站权限. 配置站点主题. 添加Apps到站点. 为网站中使用创建并部署多媒体. 配置和自定义

BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发人员工具 使用Visual Studio 2012开发SharePoint

BEGINNING SHAREPOINT? 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发人员工具 使用Visual Studio 2012开发SharePoint应用程序 VS2012带有标准系列的工程级和项目级模板,使得SP开发更加简单更加强大.使用SP2010你可以应用VS2010做大量开发,使用VS2012,现在你可以有很多新的功能和选择. 微软带了标准系列的工程级模板,开箱即用,附带额外系列的工程项目模板来帮助你进行开发.例如,你可以创建SP2013

BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发人员工具 SharePoint开发的其他工具

BEGINNING SHAREPOINT? 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发人员工具 SharePoint开发的其他工具 本章节讲了很多SP开发可用的核心工具.当然,除了这些主流的,你还会碰到一些不错的工具--一些可能是你组织中专有的.两个较少人知道的工具在一些情境中是很有帮助的:Expression Blend--设计用,特别是当你构建基于Silverlight的应用程序:Fiddler--调试用. 使用Expression Blend开发 V

BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发人员工具 总结

BEGINNING SHAREPOINT? 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发人员工具 总结 在SP2013中很多重要的开发工具对你来说都是可用的,你可以进行不同类型的开发--从超级用户到设计到管理代码.一些指定的工具包括Napa.SPD.VS.Expression Blend和Fiddler. 随着你在SP开发人员社区成为活跃的一份子,你会发现更多工具.随着VS2012的发布.良好的生命周期和现有对刚进入SP开发世界的人的模板支持,对SP开发的支

BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发人员工具

BEGINNING SHAREPOINT? 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发人员工具 本章你将学到: 理解SharePoint 2013不同工具选项: 在对比中挑选出合适的工具: 本章代码下载: http://www.wrox.com/WileyCDA/WroxTitle/productCd-1118495845.html .主要是SP_Hosted_Custom_List.zip. 在本书这个阶段,你已经了解了SharePoint是什么.新的A