SharePoint 2013 Search - A Developer’s Perspective - SPSSV 2013

25
INTRODUCTION TO SHAREPOINT 2013 SEARCH AND CREATING DYNAMIC CONTENT MANAGEMENT SOLUTIONS Ryan McIntyre MCITP, MCPD Director, Portals & Collaboration @ryanmcintyre

Transcript of SharePoint 2013 Search - A Developer’s Perspective - SPSSV 2013

Page 1: SharePoint 2013 Search - A Developer’s Perspective - SPSSV 2013

INTRODUCTION TO SHAREPOINT 2013 SEARCH AND CREATING DYNAMIC

CONTENT MANAGEMENT SOLUTIONS

Ryan McIntyre

MCITP, MCPD

Director, Portals & Collaboration

@ryanmcintyre

Page 2: SharePoint 2013 Search - A Developer’s Perspective - SPSSV 2013

Thank You to Our Sponsors

Page 3: SharePoint 2013 Search - A Developer’s Perspective - SPSSV 2013

• SharePoint 2013 Search Overview– Changes from 2010

• Search Solutions• OOTB Web Parts Review• API

– Server side

– Client side

• Packaging & Deployment

LEAVE NOW…OR…

Page 4: SharePoint 2013 Search - A Developer’s Perspective - SPSSV 2013

SCENARIOS

Page 5: SharePoint 2013 Search - A Developer’s Perspective - SPSSV 2013

Powerful Engine

2013 SEARCH INTRO

FAST Index FS4SP 2010

Search2013

Search

Page 6: SharePoint 2013 Search - A Developer’s Perspective - SPSSV 2013

2013 SEARCH ARCHITECTURE

HTTPFile sharesSharePointUser profilesLotus Notes DocumentumExchange foldersCustom - BCS

SharePointSP AppsDevicesNon-SP UX

SearchAdmin

Content UX

CrawlContentProcessing Index

QueryProcessing WFE

API

AnalyticsProcessing

FAST Search Index

Public API

Unit of scale/role boundary

Feeding Chain Index Core

Query Chain

Analytics Service

Page 7: SharePoint 2013 Search - A Developer’s Perspective - SPSSV 2013

• Content Source

• Search Schema– Now available through

site administration

• Query Rule– Customization of

returned results

– Captures Intent, composed of

• Query Condition

• Query Action

• Publishing Options

CORE BUILDING BLOCKS

Page 8: SharePoint 2013 Search - A Developer’s Perspective - SPSSV 2013

• Query Transforms– Web Parts (3)

– Query Rule (2)

– Result Source (1)

• Result Source– Scope +

– Federated +

• CSWP

CORE BUILDING BLOCKS

Page 9: SharePoint 2013 Search - A Developer’s Perspective - SPSSV 2013

• Result Type– How to display types of

results

• Display Templates– CSWP

– Hover Panel

– Refiner

– Search Results

CORE BUILDING BLOCKS

Page 10: SharePoint 2013 Search - A Developer’s Perspective - SPSSV 2013

SEARCH EXPERIENCE

Query Rules – what’s “on sale”

today?

Display Template – show an image with

a description

Result Types – when content class =

merchandise use my display template

Result Source – catalog of items

Recommendations – People who viewed this also

viewed thatPersonal Query

History – what did you find before?

Refiners – used for faceted

navigation

Page 11: SharePoint 2013 Search - A Developer’s Perspective - SPSSV 2013

SEARCH IN ACTION DEMO

Page 12: SharePoint 2013 Search - A Developer’s Perspective - SPSSV 2013

EXECUTING QUERIES

Page 13: SharePoint 2013 Search - A Developer’s Perspective - SPSSV 2013

EXECUTING QUERIES: KQL

Page 14: SharePoint 2013 Search - A Developer’s Perspective - SPSSV 2013

EXECUTING QUERIES: REST

Keywords http://server/site/_api/search/query?querytext='{KQL Query}‘

Selecting Properties http://server/site/_api/search/query?

querytext='test'&selectproperties='Title,Rank'

Sorting http://server/site/_api/search/query?

querytext='test'&sortlist='LastModifiedTime:descending' http://server/site/_api/search/query?

querytext='test'&sortlist='LastModifiedTime:descending,Rank:ascending'

Page 15: SharePoint 2013 Search - A Developer’s Perspective - SPSSV 2013

EXECUTING QUERIES: REST

<d:RelevantResults m:type="Microsoft.Office.Server.Search.REST.RelevantResults"> <d:RowCount m:type="Edm.Int32">16</d:RowCount> <d:Rows m:type="SP.SimpleDataTable"> <d:Rows> <d:element m:type="SP.SimpleDataRow"> <d:Cells> <d:element m:type="SP.KeyValue"> <d:Key xml:space="preserve">Rank</d:Key> <d:Value xml:space="preserve">29.4688339233398</d:Value> <d:ValueType xml:space="preserve">Edm.Decimal</d:ValueType> </d:element>

Page 16: SharePoint 2013 Search - A Developer’s Perspective - SPSSV 2013

EXECUTING QUERIES: CSOM

ClientContext ctx = new ClientContext("http://sharepointonline/site");

var query = new KeywordQuery(ctx, ctx.Site);query.QueryText = "Search terms";query.ResultTypes = ResultType.RelevantResults;query.Id = Guid.NewGuid();var queries = new KeywordQuery[1];queries[0] = query;SearchExecutor searchExecutor = new SearchExecutor(ctx);var rcc = searchExecutor.ExecuteQueries(queries);ctx.ExecuteQuery();

Page 17: SharePoint 2013 Search - A Developer’s Perspective - SPSSV 2013

QUERY DEBUGGING

Page 18: SharePoint 2013 Search - A Developer’s Perspective - SPSSV 2013

CSWP & DISPLAY TEMPLATE DEPLOYMENT

Page 19: SharePoint 2013 Search - A Developer’s Perspective - SPSSV 2013

• <cringe>Design in UI</cringe>• Export• Visual Studio solution

– Create “host” page

– Add markup for CSWP from export

– Properly escape ‘{‘, ‘}’, and quotes in DataProviderJSON property

CSWP DEVELOPMENT & DEPLOYMENT

Page 20: SharePoint 2013 Search - A Developer’s Perspective - SPSSV 2013

• Create HTML file and verify results in UI• Export JS• Visual Studio solution

– Include JS

– Deploy to “_catalogs/masterpage/Display Templates/Content Web Parts”

– {Optionally, deploy HTML (not JS) and programmatically update file post-deployment to generate JS}

DISPLAY TEMPLATE DEVELOPMENT & DEPLOYMENT

Page 21: SharePoint 2013 Search - A Developer’s Perspective - SPSSV 2013

DEPLOYMENT DEMO

Page 22: SharePoint 2013 Search - A Developer’s Perspective - SPSSV 2013

SCENARIOS

Page 23: SharePoint 2013 Search - A Developer’s Perspective - SPSSV 2013

Ryan McIntyre

[email protected]

http://blog.randomdust.com

@ryanmcintyre

303-520-6337

Page 24: SharePoint 2013 Search - A Developer’s Perspective - SPSSV 2013

• http://sp2013searchtool.codeplex.com/

RESOURCES

Page 25: SharePoint 2013 Search - A Developer’s Perspective - SPSSV 2013

Join us right after the event at the Firehouse Grill! Socialize and unwind after our day of learning.

1765 E. Bayshore RoadEast Palo Alto, CA

Don’t Forget SharePint

Thank you for joining us Today!