SharePoint 2013 Search - A Developer’s Perspective - SPSSV 2013
-
Upload
ryan-mcintyre -
Category
Technology
-
view
734 -
download
2
Transcript of 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
Thank You to Our Sponsors
• SharePoint 2013 Search Overview– Changes from 2010
• Search Solutions• OOTB Web Parts Review• API
– Server side
– Client side
• Packaging & Deployment
LEAVE NOW…OR…
SCENARIOS
Powerful Engine
2013 SEARCH INTRO
FAST Index FS4SP 2010
Search2013
Search
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
• 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
• Query Transforms– Web Parts (3)
– Query Rule (2)
– Result Source (1)
• Result Source– Scope +
– Federated +
• CSWP
CORE BUILDING BLOCKS
• Result Type– How to display types of
results
• Display Templates– CSWP
– Hover Panel
– Refiner
– Search Results
CORE BUILDING BLOCKS
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
SEARCH IN ACTION DEMO
EXECUTING QUERIES
EXECUTING QUERIES: KQL
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'
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>
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();
QUERY DEBUGGING
CSWP & DISPLAY TEMPLATE DEPLOYMENT
• <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
• 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
DEPLOYMENT DEMO
SCENARIOS
Ryan McIntyre
http://blog.randomdust.com
@ryanmcintyre
303-520-6337
• http://sp2013searchtool.codeplex.com/
RESOURCES
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!