1
Integrating the BCS with Search in SharePoint 2013
Andy Boyet, CISSPSharePoint Architect @ Sparkhound
[email protected]: @andrewboyet
LinkedIn: https://www.linkedin.com/in/andyboyet
2
IntroductionGoal: Understand concepts for the BCS and how to integrate it with Search
• What is the BCS• BCS Feature Set• Enhancing the BCS for Search
3
What is the BCS?Feature of SharePoint that facilitates integration with other systems
How?• Introduced in 2007 as Business Data Catalog (BDC)• Data model description• Tooling has improved
4
BCS Feature Set
5
Components
6
ToolsSharePoint Designer: adds to the BCS Store
Visual Studio: Deploy wsp and activate farm feature
7
Content TypeHierarchical reusable collection of columns, workflow, and other settings.Item
Event Link Task
8
External Content TypesLike normal Content Types, only external
Tools for Creating:• SharePoint Designer (.Net, SQL, WCF)• Visual Studio
XML behind the scenes
Defined as Entities
9
ECTs in SharePoint Designer
10
ECTs in SharePoint Designer
11
Visual Studio BDC Explorer
12
App-Scoped ECTs• Introduced in 2013• Isolated from the rest of the farm• Requires Visual Studio• One model/app• Only ODATA sources
13
Presentation Features• External List• External Data Column
14
Extensibility Features• REST APIs– http://<sitecollection>/<site>/_api/
• CSOM APIs• Server OM– .Net
• Remote Event Receivers– New in 2013
15
Connector Framework• ODATA • WCF• SQL• .NET
16
Profile Pages• Similar to List Forms• Can be overridden - DisplayUriField
17
Secure Store Service• Used for Storing Credentials• Accessible through CA and Powershell
18
External Data SearchTwo Parts• BCS Model – Additional properties required for search support
• Connector
19
ShowInSearchUISet on a LobSystemInstance element
20
Search UI
21
BCS Requirements for Search• Finder and Specific Finder Methods• DisplayUri• Permissions for Search Account• BinarySecurityDescriptorAccessor• StreamAccessor
22
Incremental Crawl• ChangedIdEnumerator Method• DeletedIdEnumerator Method• LastModifiedTimeStamp
23
Caution• Version numbers must be incremented to pick up
changes
24
InputUriProcessor• Specifies the name of the class that processes the
input URL before passing it to the connector. Applies to .NET and custom BCS indexing connectors.
25
OutputUriProcessor• Specifies the name of the class that processes the
output URL before passing it to the search system from the connector. Applies to .NET and custom BCS indexing connectors.
26
SystemUtilityTypeNameSpecifies the name of the class that implements the StructuredRepositorySystemUtility class. Applies to custom BCS indexing connectors.
<LobSystems> <LobSystem Name="MyFileSystem" Type="Custom"> <Properties> <Property Name="SystemUtilityTypeName" Type="System.String">MyFileConnector.MyFileConnector, MyFileConnector, Version=1.0.0.0, Culture=neutral, PublicKeyToken=15865f58b9878bf8</Property></Properties><Entities>
27
TitleFound in Entity Elements• Specifies the title of the external content type to
display in search results.
28
DefaultLocaleFound in Entity Elements• Specifies the locale string. You can override this
value by using the LCIDField property or the CultureField property.
29
RootFinderFound in Method Elements• Specifies the Finder method to use to enumerate
the items to crawl.
30
DirectoryLinkFound in Association Elements• Specifies that BCS should navigate associations.
Required for hierarchical crawling.
31
DeletedCountFieldFound in Method Elements• Specifies the deleted count value.
32
WindowsSecurityDescriptorFieldFound in Method Elements• Specifies the Windows Security descriptor for the
item• GetSecurityDescriptor method
33
AuthorFieldFound in Method Elements• Specifies the author name to display in search
results.
34
DisplayUriFieldFound in Method Elements• Specifies the URL to display in search results• Overrides the Profile Page• May require a restart of search service
35
LastModifiedTimeStampFieldFound in Method Elements• Specifies the external item's timestamp to display
in search results. • Used for incremental crawling.
36
DescriptionFieldFound in Method Elements• Specifies the description to display in search
results.
37
LCIDFieldFound in Method Elements• Specifies the locale ID (LCID) for the
DescriptionField. If this is not specified, the default word breaker is used.
38
CultureFieldFound in Method Elements• Specifies the culture for the DescriptionField.
39
ExtensionFound in Method Elements• Specifies the file name extension for the crawlable
stream. • Default extension is .txt.
40
MimeTypeFound in Method Elements• Specifies the MIME type for the crawlable stream.
If not specified, the default extension is .txt. • Takes precedence over the Extension Property
41
MimeType Example<MethodInstance Name="LargeResumeAccessor" Type="StreamAccessor" ReturnParameterName="StreamData" ReturnTypeDescriptorName="ResumeLarge"> <Properties> <Property Name="MimeType" Type="System.String">application/vnd.openxmlformats-officedocument.wordprocessingml.document</Property> <Property Name="FileName" Type="System.String">Resume Large.docx</Property> <Property Name="MimeTypeField" Type="System.String">ResumeLargeMIME</Property> <Property Name="FileNameField" Type="System.String">ResumeLargeName</Property> <Property Name="MaxFileSizeInKB" Type="System.Int32">120</Property> </Properties></MethodInstance>
42
UseClientCachingForSearch Found in Method Elements• Specifies whether the crawler caches the content
during enumeration.
43
EnumerateIdsOnlyFound in FilterDescriptor Elements• Specifies whether to return IDs only in the
IDEnumerator.
44
CrawlStartTimeFound in FilterDescriptor Elements• Contains the start time of the last crawl.
45
Configure SearchConfigure Search Service App$searchapp = Get-SPEnterpriseSearchServiceApplication
New-SPEnterpriseSearchCrawlCustomConnector -SearchApplication $searchapp -protocol myfile -ModelFilePath "\\ServerName\FolderName\MyFileModel.xml" -Name myfile
Registry Key[HKEY_LOCAL_MACHINE]\ SOFTWARE\Microsoft\Office Server\15.0\Search\Setup\ProtocolHandlers\myfile
46
Thanks to all our Sponsors!
Top Related