Integrating Search Driven Content in SharePoint 2013
Upcoming SlideShare
Loading in...5
×
 

Integrating Search Driven Content in SharePoint 2013

on

  • 4,100 views

Learn all about new search driven content strategies in SharePoint 2013, starting with add content, followed by display content throughout your SharePoint site and finishing with a look at refining ...

Learn all about new search driven content strategies in SharePoint 2013, starting with add content, followed by display content throughout your SharePoint site and finishing with a look at refining your search results using query rules and result types

Statistics

Views

Total Views
4,100
Views on SlideShare
3,974
Embed Views
126

Actions

Likes
0
Downloads
35
Comments
0

2 Embeds 126

http://ericoverfield.com 121
https://twitter.com 5

Accessibility

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Aggregate and display content such as news and events, recent updates, or popular content. In this session, we will utilize new SharePoint 2013 features to perform content aggregation and rollups.We will demonstrate how to get content from multiple sites by using the new SharePoint 2013 cross-site publishing feature. Then we will create a content rollup solution by creating custom display templates for SharePoint's Content Search web part. Last, we will look at how to fine tune search queries and customize the display of results in search. We will demonstrate how to use Query Rules and Result Types to improve the search experience.
  • Will make available on blog and twitter (slideshare.net), so if you remember one of those then you can always review everything we discuss
  • In the first scenario, we want to show potential buyers a rollup of all the available Specter Group properties for sale from all the communities, such as floor plans, description, and property type. Because only builders and architects at Specter Group can author and manage floor plans, we want to have a dedicated and separate site just for floor plans (www.spectergroup.com/sites/floorplan). Meanwhile, we want to present all the floor plans to site visitors of www.spectergroup.com in a seamless manner. To accomplish this, we need to perform the following stepsWe need to make the floor plan content in the authoring site available to search so that other sites can consume the content.We need to ensure search is periodically indexing the authoring content to ensure the dynamic content is up to date.From the public spectergroup.com site, we need to consume the floor plan content from search. From the public spectergroup.com site, we need to customize the display of the rolled up content.
  • To accomplish this, we need to perform the following steps (for a process diagram of the scenario, refer to Figure 9-1):We need to make the floor plan content in the authoring site available to search so that other sites can consume the content.We need to ensure search is periodically indexing the authoring content to ensure the dynamic content is up to date.From the public spectergroup.com site, we need to consume the floor plan content from search. From the public spectergroup.com site, we need to customize the display of the rolled up content. Content deployment?Extranet users must have (restricted) read permission on authoring site – this is required unless you want to make content anonymous. customer does not agree with allowing external users access to authoring environment (separate farm that also hosts Intranet, etc).XSP only supports pages and lists; as such, assets must be managed in a separate site collection (sub-optimal authoring experience)One of the consequences of using the SharePoint 2013 search-based publishing model is that it only applies to the content that can be indexed. All other assets such as images or files are not included in the search index and therefore it is still your responsibility to ensure that they are available everywhere where the content from a catalog might be published.store all publicly available assets in a separate Site Collection; Using Suggested Content Browser Locations makes it easier for content authors to work with assets stored in a different Site Collection than the one they use for authoring content.the problem is that Content deployment is not only a matter of size. It is more a matter of number of changes, frequency of deployments and concurrency between what gets read and updated while there’s activity on the destination site
  • CD must be across content databases because GUID’s for content are shared
  • May be stored anywhere, across site collections, web applications, and also across farms.
  • After you crawl the contentCreate a new Managed property from a crawled property
  • On the Specter Group publicfacing site, click Site Settings. Under Site Administration, click Manage catalog connections. Click the Connect to a Catalog link on the page to view all the available published catalogs. For our scenario, click the Connect link next to the Floor Plan - Specter Group Community Floor Plans catalog When connecting to a catalog, we have the option to integrate the catalog with the whole site by selecting Integrate the catalog into my site or we can select Connect, but do not integrate the catalog to allow less integration. Because we are exposing the Floor plan content specifically on one page, the Floor Plans page, we will not be integrating with the Specter Group public-facing site's navigation. Because we are presenting the search results to public users, they will not have access to the authoring site, http://spectergroup.com/sites/floorplan site collection. Under the Catalog Item URL Behavior section, ensure the Make URLs relative to this site option is selected
  • Almost anywhere because of security and bandwidth concerns
  • The full-screen Query Builder allows users to create and test queries without having to learn keyword query syntax. It shows a real-time preview of the search result on the right. we select the Floor Plan catalog we published in the previous section as our result source For the sort order of our results, we can pick from any of the options in the Sort results drop-down list. For example, for an e-commerce site we could select the ViewLifeTimeUniqueUsers option to get the most popular items. For our scenario, we select the Last Modified option to sort results in descending order to show the most recent properties at the top To add refiners, we can use our new managed properties to refine our search query. Click the Refiners tab. From the list of refiners, select the new managed property, SpecterPropertyType. we leave the Refiners blank because we want to show all of the floor plans.
  • SharePoint 2013 uses Display templates in search web parts to display search results. Each display template controls what managed properties to show and how to render them in the web part. There are two major types of display templates: Control and Item A Control template is used to provide HTML to customize how the overall structure of search results is presented. This template defines the look and feel around the results, the layout of the results, paging options if any, the display of results count, a heading for the list if any, and even the display of when no results are found. Item templates provide HTML that determines how each result item is displayed. This template defines the look and feel of each item, the managed properties to display for each item, and the display of each managed property. It might be displaying text, images, or videos. Every item in the search result set is going to render the item display template once. So, the item display template creates its section of HTML as many times as the number of results. Diagnostic is useful for debugging and troubleshooting our search-driven solution as it provides a diagnostic view of all the mapped managed properties and the values used in the web part. Less common types of display templates include the Hover over template and the Filter template. Hover over templates are used to customize the look and feel of an item to show additional values when users hover over the result. For example, hover over templates for people results show additional user profile properties and hover over templates for document results show document previews. Filter templates are used when you want to show options for filtering the search results by configuring the refiners. HTML output after adding a Control display template and an Item display template Display templates work in a hierarchy in the following order: Control display template is called once per web part. Item template is called once per item.
  • All display templates consist of an HTML file and a SharePoint-generated JavaScript file. When creating or updating a display template, we should always modify the content in the HTML file, never the JavaScript file. Once the changes are made in the .html file, SharePoint compiles the changes into a .js file that has the same name as the .html file. SharePoint uses the new .js file to render the web part on the page. In the HTML file, we can add placeholders for where the managed properties and custom properties created in JavaScript should be displayed, and then SharePoint will emit the values during runtime. The recommended approach to create a custom display template is to create a new HTML file for a new display template that is based on an existing display template. We do not want to override any out-of-the-box display templates because we want to keep the out-of-the-box design intact in case we want to use it again or use it as a reference design. There are four components to implement when creating a custom display template. We need to specify all the managed properties we want to retrieve at query time so that we can use these properties in our HTML. We can externalize and add all the JavaScript and CSS files we use in the display template. For any inline JavaScript we use in the display template, we need to make sure they are below the first tag in the display template. Within the custom display template, we need to add HTML markups to render the results.
  • CD must be across content databases because GUID’s for content are shared
  • 'property display name'{property name}:'managed property'
  • With result types and query rules
  • In the second scenario, we want to customize the search experience. When users search for the keyword "floor plans", the following things happen:We will show a block of results that are all floor plans.We will promote a few beachfront properties to the top of the results if the current month is in the summer.We will render the block of results for floor plans with its own user interface to distinguish these results from all other results in the list.
  • click New Result Type at the top. Enter Floor Plans as the name of the new result type. Next to Conditions, select the Floor Plan result source to match (see Figure 9-68). By configuring the result source as its only condition, any result item in the Floor Plan result source will use this result type for rendering. Configure the new result type to use the Best Bet Item display template
  • fine-tuning the query to offer results that we think the users are looking for In SharePoint 2013, we are able to fine-tune search results based on the intent of the user's query. When users enter a query, we help them find what they are really looking for by fine-tuning the query and adding additional information to offer results that we think the users are looking for. Query rules can be created at various levels, in the Search Service application from Central Admin or at the site collection level. They are inherited by default, such that query rules created in the Search Service application are inherited by all the site collections and query rules created at the site collection level are inherited by all sites within the site collection. They can also be deactivated at a level to ensure the rule is never applied for queries submitted at that level.Condition: Set of conditions to match for this rule to fire (example: no conditions means the rule will be fired every time).If multiple conditions are specified, as long as one of the conditions is matched, then the query rule will be invoked. There are six types of conditions to choose from when creating a query rule: Query Matches Keyword Exactly: Query contains a specific word or words.Query Matches Dictionary Exactly: Query contains a word in a specific dictionary.Query Contains Action Term: Query contains an action word that matches a specific phrase or term set.Query More Common in Source: Query is common in a different source (like Videos Results Source).Result Type Commonly Clicked: Results include a common result type (like file type).Advanced Query Text Match: Advanced rule to match across a set of terms, dictionary, regular expression, and so on.For the Specter Group Floor Plans scenario, we are going to configure our query rule for Floor Plans with the condition to match keyword "Floor plans." Next, we need to configure actions to specify what happens when the query rule is applied. We can add multiple actions for each query rule. There are three options for actions:Assign promoted results: A promoted result is a result that appears at the top of the search results. This is similar to Best Bets in SharePoint 2010 or Visual Best Bets in FAST Search for SharePoint 2010. We can promote a result as a link or as a banner, which is a quick and easy way to visually present a certain result to users. Add result block: A result block is several search results displayed as a group. Similar to promoting a search result, we can promote a result block. A result block specifies an additional query to run and how to display the resultsA result block uses a result source, which can be results from the local search index or results from outside of SharePoint, such as Exchange or OpenSearch. Both search scopes and federated locations features from SharePoint 2010 have evolved into result sources. An example of a result source using OpenSearch is federating search results from Bing by providing the OpenSearch URL for its search service. An example of an out-of-the-box result source, Documents, returns all files from the local SharePoint index. While configuring a result block, this feature includes a full query designer for building and testing queries, similar to Query Builder in the Content Search web part.A result block can be configured to use specific custom display templates.Change ranked results by changing the query: Change the way SharePoint handles a particular query by supplementing a query with additional keywords or managed property restrictions. This feature can be used to tune search results. The original query can be changed by modifying the query terms, adding additional terms, applying an XRANK formula to the query, and so on. For the Specter Group Floor Plans scenario, we are going to configure our query rule for Floor Plans with an action to add promoted results for a few beachfront properties.The publishing options for a query rule determine when the rule can be used. By default, a rule is active until it is deactivated. We can also configure a rule to be active during a certain time. A good application of this is when a rule is set up for commerce scenarios. For example, we can set up a rule to promote certain products to the top for sale during a particular period of time, such as the holiday period. In the Specter Group's scenario, we want to show beachfront properties in the summer period.
  • fine-tuning the query to offer results that we think the users are looking for In SharePoint 2013, we are able to fine-tune search results based on the intent of the user's query. When users enter a query, we help them find what they are really looking for by fine-tuning the query and adding additional information to offer results that we think the users are looking for. Query rules can be created at various levels, in the Search Service application from Central Admin or at the site collection level. They are inherited by default, such that query rules created in the Search Service application are inherited by all the site collections and query rules created at the site collection level are inherited by all sites within the site collection. They can also be deactivated at a level to ensure the rule is never applied for queries submitted at that level.Condition: Set of conditions to match for this rule to fire (example: no conditions means the rule will be fired every time).If multiple conditions are specified, as long as one of the conditions is matched, then the query rule will be invoked. There are six types of conditions to choose from when creating a query rule: Query Matches Keyword Exactly: Query contains a specific word or words.Query Matches Dictionary Exactly: Query contains a word in a specific dictionary.Query Contains Action Term: Query contains an action word that matches a specific phrase or term set.Query More Common in Source: Query is common in a different source (like Videos Results Source).Result Type Commonly Clicked: Results include a common result type (like file type).Advanced Query Text Match: Advanced rule to match across a set of terms, dictionary, regular expression, and so on.For the Specter Group Floor Plans scenario, we are going to configure our query rule for Floor Plans with the condition to match keyword "Floor plans." Next, we need to configure actions to specify what happens when the query rule is applied. We can add multiple actions for each query rule. There are three options for actions:Assign promoted results: A promoted result is a result that appears at the top of the search results. This is similar to Best Bets in SharePoint 2010 or Visual Best Bets in FAST Search for SharePoint 2010. We can promote a result as a link or as a banner, which is a quick and easy way to visually present a certain result to users. Add result block: A result block is several search results displayed as a group. Similar to promoting a search result, we can promote a result block. A result block specifies an additional query to run and how to display the resultsA result block uses a result source, which can be results from the local search index or results from outside of SharePoint, such as Exchange or OpenSearch. Both search scopes and federated locations features from SharePoint 2010 have evolved into result sources. An example of a result source using OpenSearch is federating search results from Bing by providing the OpenSearch URL for its search service. An example of an out-of-the-box result source, Documents, returns all files from the local SharePoint index. While configuring a result block, this feature includes a full query designer for building and testing queries, similar to Query Builder in the Content Search web part.A result block can be configured to use specific custom display templates.Change ranked results by changing the query: Change the way SharePoint handles a particular query by supplementing a query with additional keywords or managed property restrictions. This feature can be used to tune search results. The original query can be changed by modifying the query terms, adding additional terms, applying an XRANK formula to the query, and so on. For the Specter Group Floor Plans scenario, we are going to configure our query rule for Floor Plans with an action to add promoted results for a few beachfront properties.The publishing options for a query rule determine when the rule can be used. By default, a rule is active until it is deactivated. We can also configure a rule to be active during a certain time. A good application of this is when a rule is set up for commerce scenarios. For example, we can set up a rule to promote certain products to the top for sale during a particular period of time, such as the holiday period. In the Specter Group's scenario, we want to show beachfront properties in the summer period.
  • On the Add Query Rule page, in the General Information section, in the Rule name field, type Summer Promotion as the name of the new query rule (see Figure 9-62). Expand the Context section and note that the Floor Plan result source is selected by default. Going down the page, in the Query Conditions section, ensure Query Matches Keyword Exactly is selected in the drop-down list. Enter floor plans in the text box as the query phrase to match.In the Actions section, click the Add Promoted Result link to add promotion for a few beachfront properties. In the Add Promoted Result window, shown in Figure 9-63, select the Add new promoted result option. Enter Beachfront property in the Title field, then enter the URL for the promotion banner. Select the Render the URL as a banner instead of as a hyperlink check box to render the image as a banner. Click Save to continue. Continue down the page and expand the Publishing section. Ensure the Is Active check box is selected and enter date values for Start Date and End Date to make sure this query rule is only active during certain dates

Integrating Search Driven Content in SharePoint 2013 Integrating Search Driven Content in SharePoint 2013 Presentation Transcript

  • Integrating Search Driven Content in SharePoint 2013 Eric Overfield SharePoint Advocate and Enthusiast PixelMill
  • Introduction – Eric Overfield  Founder and SharePoint Branding/UI Lead, PixelMill  Speaker, Teacher, Advocate  Author, SharePoint Community Organizer  Located in Davis, CA Co-author: “Pro SharePoint 2013 Branding and Responsive Web Development” (Apress – June 12th, 2013) Order Your Copy http://pxml.ly/zsqykd Co-author: “Black Magic Solutions for White Hat SharePoint” (August, 2013) ericoverfield.com @EricOverfield
  • What You Will Learn  Aggregate Content Across Sites cross-site publishing feature  Create Content Rollup Solutions custom display templates  Customize Individual Search Results result types  Fine-tune Search Queries query rules @EricOverfield - pixelmill.com
  • Aggregate Content Across Site(s) @EricOverfield - pixelmill.com
  • The Old Way Site Collection A Site Collection A Search Crawl Search Content Query Web Part (CBQ) Site Collection B Site Collection B Search Crawl Search Content Query Web Part (CBQ) @EricOverfield - pixelmill.com
  • The SharePoint 2013 Way Site Collection A Site Collection D Site Collection B Search Crawl Site Collection C Search Content Search Web Part @EricOverfield - pixelmill.com
  • Demo Solution: What We Want to Build… Scenario: Show dynamic content Show potential buyers a rollup of all the available Specter Group properties for sale @EricOverfield - pixelmill.com
  • Solution @EricOverfield - pixelmill.com
  • Hold On… Important Prerequisites  Enterprise License Required For Catalog creation and CBS  Depends on Search Indexer  Source site collection feature, Cross-Site Collection Publishing must be activated  On-prem only – No O365 support yet @EricOverfield - pixelmill.com
  • And Limitations  Consuming site requires restricted read access on authoring site  Because results can be security trimmed  Cross site publishing only supports pages and lists  Content assets (videos, images, etc.) need to be on assets site  Use Suggested Content Browser Location  Results based on search index freshness @EricOverfield - pixelmill.com
  • What About Content Deployment?  Very different approach  Must be across content databases  Not based on search  May be used for similar reasons, but apples to oranges comparison @EricOverfield - pixelmill.com
  • My Content a Comparison Let’s Notifications Push See  Store it anywhere, across site collections, web applications or farms @EricOverfield - pixelmill.com
  • Create a catalog @EricOverfield - pixelmill.com
  • Managed Properties  Required to surface/retrieve new content columns  Configured in Central Admin or Site Collection  Search Schema  Content has to have been crawled  Another full crawl after a new managed property @EricOverfield - pixelmill.com
  • Creating Managed Properties Let’s Notifications Push See a Comparison @EricOverfield - pixelmill.com
  • GettingSee a Comparison Let’s Content from a Push Notifications Catalog @EricOverfield - pixelmill.com
  • Aggregate Content Review Let’s Notifications Push See a Comparison Prerequisites have been addressed (licenses and features) We have source content -> catalog, stored anywhere (almost) Content has been crawled Managed properties have been created Content has been crawled - again Consuming site has been connected to catalog Ready to display! @EricOverfield - pixelmill.com
  • Content Rollup with the Content Search Web Part @EricOverfield - pixelmill.com
  • The Content Search Web Part (CBS) @EricOverfield - pixelmill.com
  • Get Dynamic Content with Query Builder Let’s Notifications Push See a Comparison @EricOverfield - pixelmill.com
  • Show DynamicComparison Let’s Notifications Push See a Content with Display Templates @EricOverfield - pixelmill.com
  • Customize Your Display Templates! @EricOverfield - pixelmill.com
  • What Makesa Comparison Let’s Notifications Push See up a Display Template?  Control template  Item Template  HTML and JS  No more XSLT!  Retrieves Managed Properties @EricOverfield - pixelmill.com
  • CustomNotifications Let’s Display Templates Push See a Comparison  Add to Master Page Gallery  Copy from an existing display template  Use any editor @EricOverfield - pixelmill.com
  • Implementing Custom Display Templates  Must specify all managed properties to surface  May externalize CSS and JS that template needs  Inline JS must appear after the first <div>  Add HTML markup to render results @EricOverfield - pixelmill.com
  • A Look See a Code: Item Template Let’s Notifications Push at the Comparison Obtain Managed Properties <mso:ManagedPropertyMapping msdt:dt="string"> 'LastModifiedTime':'LastModifiedTime', 'Specter Property Type'{Specter Property Type}:'SpecterPropertyType', 'Picture URL'{Picture URL}:'PublishingImage;PictureURL;PictureThumbnailURL', 'Link URL'{Link URL}:'Path', 'Line 1'{Line 1}:'Title', 'Line 2'{Line 2}:'Description', 'SecondaryFileExtension', 'ContentTypeId' </mso:ManagedPropertyMapping> @EricOverfield - pixelmill.com
  • A Look See a Code: Item Template Let’s Notifications Push at the Comparison Load Managed Properties into JavaScript Variables var specterPropertyType = $getItemValue(ctx, "SpecterPropertyType"); var lastModifiedTime = $getItemValue(ctx, "LastModifiedTime"); @EricOverfield - pixelmill.com
  • A Look See a Code: Item Template Let’s Notifications Push at the Comparison Display JavaScript Variables with HTML Markup <span class="_#= specterPropertyType=#_"> <a href="_#= linkURL =#_" class="thumb"> _#= pictureMarkup =#_ <div class="date"> <div class="d">_#= date=#_</div> <div class="m">_#= month=#_</div> </div> </a> <div class="caption">Property Type: _#= specterPropertyType=#_</div> </span> @EricOverfield - pixelmill.com
  • Display Components and Their Mappings Component Type File Style for the entire result set block and for each search result item CSS style.css Structure for HTML tag: the entire block <ul> of results Display content for each result item Pre-process data for each result item HTML tag: <li> JavaScript Control_List_Specter Item_LargePicture_Specter Inline JavaScript in Item_LargePicture_Specter SharePoint Artifacts CSS file in the Master Page Gallery: /Spectergroup/css/style.css Custom Control display template in the Master Page Gallery: /Display Templates/Content Web Part/Control_List_Specter.html Custom Item display template in the Master Page Gallery: /Display Templates/Content Web Part/Item_LargePicture_Specter.html Custom Item display template in the Master Page Gallery: /Display Templates/Content Web Part/Item_LargePicture_Specter.html @EricOverfield - pixelmill.com
  • DisplaySee a Comparison Let’s Templates Review Push Notifications Copy an existing display template Add managed properties to top of display template Customize with HTML, JavaScript and CSS @EricOverfield - pixelmill.com
  • That is SharePoint 2013 Content Rollup OK? in a Nutshell @EricOverfield - pixelmill.com
  • Fine Tune Search Results and Content Rollups @EricOverfield - pixelmill.com
  • Target Individual Result Items! @EricOverfield - pixelmill.com
  • Quick Test a Comparison Let’s Notifications Push See  Wait, what, a Test?  Find the PDF  Find Joanna’s Project @EricOverfield - pixelmill.com
  • The Problem  Results all look the same  But all documents/results are not the same  Forces us to search our results @EricOverfield - pixelmill.com
  • Demo Solution: What We Want to Build… Scenario: Customize Search Experience When user searches for “floor plans”  Customize floor plans result type as best bets  Promote beachfront properties in the summer
  • Result Types Tailor the look of important types of results One of these things… is not like the other. @EricOverfield - pixelmill.com
  • Result Types  Conditions match result properties  Identify a “type” of result  Display Templates can change the look  Of a “type” of result @EricOverfield - pixelmill.com
  • Your Own Result Type @EricOverfield - pixelmill.com
  • And Thus Styled @EricOverfield - pixelmill.com
  • Query Rules  Custom results based on intent  May be created at various levels Search Service App or Site Collection and inherited  May be deactivate at child levels @EricOverfield - pixelmill.com
  • Create a Query Rule  Condition: Set of conditions to match to fire rule  One or more conditions per rule  Six types of conditions available  Action: What to do when rule fired  One or more actions per rule  Six types of actions available  Publishing: When should a rule be active  i.e. only during a certain time span @EricOverfield - pixelmill.com
  • Your Own Query Rule Add a Summer Promotion for Beachfront Properties @EricOverfield - pixelmill.com
  • @EricOverfield - pixelmill.com
  • @EricOverfield - pixelmill.com
  • And Thus Promoted @EricOverfield - pixelmill.com
  • Result Typesa Comparison Review Let’s Notifications Push See and Query Rules Result Types Match Conditions to Item Display Templates Query Rules Match Conditions with Actions @EricOverfield - pixelmill.com
  • What You Did Learn  Aggregate Content Across Sites cross-site publishing feature  Create Content Rollup Solutions custom display templates  Customize Individual Search Results result types  Fine-tune Search Queries query rules @EricOverfield - pixelmill.com
  • Resources Configure cross-site publishing in SharePoint 2013: http://technet.microsoft.com/en-us/library/jj656774.aspx Connect a publishing site to a catalog: http://technet.microsoft.com/en-us/library/jj679901.aspx Administer search in SharePoint Server 2013: http://technet.microsoft.com/en-us/library/ee792877.aspx Display template reference in SharePoint Server 2013: http://technet.microsoft.com/en-us/library/jj944947.aspx Understanding the display template structure: http://msdn.microsoft.com/en-us/library/jj945138.aspx#bk_DTstructure Make a query rule inactive: http://technet.microsoft.com/en-us/library/jj871014.aspx#BKMK_MakeInactive Customize search result types: http://technet.microsoft.com/en-us/library/dn135239.aspx Create query rules: http://technet.microsoft.com/en-us/library/jj871014.aspx @EricOverfield - pixelmill.com
  • Integrating Search Driven Content in SharePoint 2013 Thank You Eric Overfield @EricOverfield ericoverfield.com eoverfield@pixelmill.com