How to configure the Search Results Web Part to use a new result source in SharePoint 2013
This is a blog post in the series “Set up a Search Center in SharePoint 2013”.
In the previous blog post, I showed you how to create a Search Center Site Collection and enable crawling of your content. In this post you’ll learn:
- How to turn off versioning for the Pages library
- Why you should consider creating a result source for your Search Center
- How to create a result source
- How to configure the Search Results Web Part to use a new result Source
How to turn off versioning for the Pages library
If you don’t want to check pages in and out when you configure the Search Results Web Part, you can turn off versioning for the Pages library.
To turn off versioning for the Pages library:
- Go to Site settings --> Site contents.
- On the Site Contents page, click the Pages library.
- In the Pages library, click the LIBRARY tab and then Library Settings.
- On the Settings page, click Versioning settings.
- On the Versioning Settings page, in the Content Approval section, for Require content approval for submitted items, select No.
- In the Document Version History section, for Create a version each time you edit a file in this document library, select No versioning.
- In the Require Check Out section, for Require documents to be checked out before they can be edited, select No.
Why you should consider creating a result source for your Search Center
A result source specifies where your search results can come from.
For example, in my scenario, I did not want search results to come from all sites within the SharePoint farm. I only wanted search results from one specific site within the farm.
The default result source in a Search Center returns search results from the entire SharePoint farm. If you want search results from the entire SharePoint farm, you can skip to the next blog post in this series. However, if you want search results from only a sub set within your SharePoint farm (in my scenario, one specific site), you should create a result source.
How to create a result source
Depending on your permission level, you create a result source on three levels:
Permission level | Where the result source will be added |
Search service application administrator | To all site collections within the farm |
Site collection administrator | To all sites within a site collection |
Site collection owner | To a single site |
To save space, I will only show you how to create a result source as a Site collection administrator.
- Go to Site settings --> Search Result Sources.
- On the Manage Result Sources page, click New Result Source.
On the Add Result Source page, enter a Name. Select values for Protocol and Type, and click Launch Query Builder. This will open a dialog box.
In my scenario, I named the result source Articles, and kept the default values for Protocol and Type.
In the Build Your Query dialog box, define the result source.
Remember, in my scenario, I only wanted search results to come from a particular site within the farm, so in the Query text field, I added the following:
{searchTerms?} (contentclass:sts_listitem) path:https://<path>
Now, before we move on, let me break down what I entered:
- {searchTerms?} In my result source, I wanted to include the words that users type in the query box whey then search for something. Obviously I have no way of knowing what users will type, so I added the query variable {searchTerms?} By the way, you can tell it’s a query variable because it’s enclosed in curly brackets. When users enter a query, this query variable will be replaced by the words the users have typed in the query box. The question mark at the end of the variable means that if no words have been entered, the variable should be ignored.
- (contentclass:sts_listitem) This means that only list items will be included in my result source.
- path:https://<path> This is the path to the site from where I wanted search results to come from.
- Test that the result source is working correctly by clicking on the TEST tab, and then Show more.
In the {searchTerms} field enter Query words to simulate a query entered by a user, and then click Test query.
In my scenario, I entered search configuration.
Notice that 52 results were returned (I will tell you why this is kind of cool in the next section…).
- Click OK to close the dialog box, and then Save.
So now that we have a result source for the Search Center, we can move on to configuring the Search Results Web Part to use the new result source.
How to configure the Search Results Web Part to use a new result source
By default, the Search Results Web Part is used on the search results page. In order to configure the Search Result Web Part, you have to navigate to the search results page.
On your Search Center home page (the default URL to this page is <site>/Pages/default.aspx), enter a query in the search box, and press Enter.
In my scenario, I entered search configuration.
When you press Enter, you will be taken to the to the search results page (the default URL to this page is <site>/Pages/results.aspx).
In my scenario, 1,051 search results were returned.
Remember, by default you’ll get search results from the entire SharePoint farm. To change this so that only search results from your newly created result source are returned, here’s what you should do:
- On the search results page, click the Settings menu --> Edit Page.
- In the Search Results Web Part, click the Web Part Menu, and then Edit Web Part.
- In the Web Part tool pane, click Change query. This will open a dialog box.
In the dialog box, from the Select a query menu, select your newly created result source.
In my scenario, I selected the Articles (Site Collection) result source.
Click OK in the dialog box, OK in the Web Part Tool pane, and then save the page. To verify that the configuration is working, enter a query.
In my scenario, I entered search configuration.
52 results were returned, which is the same number of items that was returned when I tested the query in the result source configuration. Cool, don’t you think?
Now that the Search Results Web Part displays the search results we are interested in, the next step is to make it easier for users to filter these search results. To do this, we'll use refiners, which is the subject of the next blog post.
Next blog post in this series
Plan to use refiners on a search results page
Comments
Anonymous
January 01, 2003
Hi darsh, It’s a bit difficult to say exactly what is causing your issue, but does the query in your Search Results Web Part have something in it that returns search results? For example, does your query contain a phrase or word? BellaAnonymous
January 01, 2003
Hi NP,
Could you please explain a bit more what content you want to query for?
Thanks,
BellaAnonymous
January 01, 2003
Hi Vlad,
To retrieve items from a specific list, you can create a result source for that list, and then use the your newly created result source it when you configure the query in your Search Results Web Part.
BellaAnonymous
January 01, 2003
Hi, Just so that I can understand your scenario a bit better, are you getting this error message when you’re creating a new result source? If so, at which level are you creating the result source? In Central Admin, or on a site collection level? BellaAnonymous
January 01, 2003
Hi Olav,
I'm not sure I quite follow your scenario. You can add a Content Search Web Part to a category page, and then configure the query in that Web Part to show only items within the category. I explain how you can do this in another blog post:http://blogs.technet.com/b/tothesharepoint/archive/2013/04/30/stage-9-configure-the-query-in-a-content-search-web-part-on-a-category-page.aspx
Does this answer your question? If not, good if you can give me some more details about what you want to accomplish.
Thanks,
BellaAnonymous
January 01, 2003
Hi NP,
Sorry, I don't have the details on how you can achieve this.
BellaAnonymous
January 01, 2003
Wonderful blog Bella! I have created a People Search with refiners for Company (we have multiple) and Department on the left. I'd like the initial search to use a default Company refiner value, but then the user must be able to change the Company refiner. Setting this in the Result Source would limit the result to only that company. Any ideas?Anonymous
January 01, 2003
Hi NP,
I have now verified that there isn't a token that translates to "now". You'll have to write custom code in order to implement this.
BellaAnonymous
January 01, 2003
Hi Olav,
Regarding your first question about the word "extra". You can use a custom entity extraction and create a refiner for the word "extra". For more information on how to do this, see this article:http://technet.microsoft.com/en-us/library/jj219480(v=office.15).aspx
Regarding your second questions, does your Managed Metadata column allow multiple values? If so, it won't show up in the drop down list on the Catalog Settings page.
Hope this helps,
BellaAnonymous
January 01, 2003
Really thanks for the content.Anonymous
January 01, 2003
Can you please elaborate more how to archive this by custom code at least general approach? thanks NPAnonymous
January 01, 2003
Hi Varun,
Check out the blog series How to display recommendations and popular items on a SharePoint Server 2013 site (http://blogs.technet.com/b/tothesharepoint/archive/2014/01/15/how-to-display-recommendations-and-popular-items-on-a-sharepoint-server-2013-site.aspx).
BellaAnonymous
January 01, 2003
Hi Alain,
I believe you should be able to do this by creating a custom result source. For more information on how to do that, see this article:http://technet.microsoft.com/en-us/library/jj683115(v=office.15).aspx
BellaAnonymous
January 01, 2003
Hi Dave,
I'm not quite sure I follow your scenario. What do you mean by "I'd like the initial search to use a default Company refiner value"?
In the Search Result Web Part, there's a REFINERS tab. Have you tried to use that?
BellaAnonymous
January 01, 2003
Hi NP,
Sorry for not updating, but I'm still looking into this.
BellaAnonymous
January 01, 2003
The comment has been removedAnonymous
January 01, 2003
Hi Optimas,
From what you describe, it seems like your Search Results Web Part (SRWP) uses a Query Rule or a custom Result Source. To see the query that your SRWP uses, go to your search results page, edit your SRWP, go to the TEST tab, and there Show more. In the last section, what does the Query text say? This is the query that's being sent by your SRWP.
If it turns out that a Query Rule or a custom Result Source is kicking in, you could try to edit either the Query Rule or the Result Source with a conditional statement by adding {?}, for example {?{searchTerms} <YourQueryRuleOrResultSource> }
Hope this helps,
BellaAnonymous
January 01, 2003
SOLUTION for those who had this problem:
"The Search display templates are not present on this site collection. To add them, you need to activate the "Search Server Web Parts and Templates" feature on the Site Collection Features page. Correlation ID: 744e619c-a77a-205e-8df1-3232307431a4 Display Error: The display template had an error. You can correct it by fixing the template or by changing the display template used in either the Web Part properties or Result Types. Template '~sitecollection/_catalogs/masterpage/Display Templates/System/Control_QueryBuilderPreview.js' not found or has syntax errors. (LoadTemplate: )"
Instructions
- Open SharePoint 2013 Management Shell as Administrator.
- Write the following script:
" Enable-SPFeature SearchWebParts -url http://"
http:// is the URL you have in your browser when you access the Central Administration of SharePoint.
For example:
" Enable-SPFeature SearchWebParts -url http://c4968397002:3695"Anonymous
January 01, 2003
Hi Kate,
It's difficult to say what could be causing your exact issue. I suggest you contact Microsoft Support with your question.
Thanks,
BellaAnonymous
January 01, 2003
Hi Michael,
I don't quite understand your question. Can you give me some more detail about what you want to accomplish?
Thanks,
BellaAnonymous
January 01, 2003
Hi Steve,
I'm not sure I completely understand your situation.
Can you give me some more details about what you're trying to accomplish, and what issues you're encountering?
Thanks,
BellaAnonymous
January 01, 2003
Hi vkmahesh,
There are no such thing as silly questions :-)
Yes, you should be able to show the publishing URL instead of the authoring URL. I've described how you can change how search results are displayed in another series:http://blogs.technet.com/b/tothesharepoint/archive/2013/09/03/how-to-change-the-way-search-results-are-displayed-in-sharepoint-server-2013.aspx.
Unfortunately I don't know the name of managed property that your could use in your specific case.
BellaAnonymous
January 01, 2003
Hi Bella,
I'm trying to restrict the search in a document library to just the current folder. I'm not sure what query expression to use from here:https://technet.microsoft.com/en-us/library/jj683123
So for example instead of:
{?path:{Site.URL}}
what would be the correct SharePoint way to do it?Anonymous
January 01, 2003
Hi Bella,
Thanks for this awesome article. I have a question which may be silly... but I am doing something silly.
Here is my scenario, I have authoring and Publishing sites where I am getting the contents from Authoring site using CSWP. Now I am trying to implement search Center where users what to search for the content from publishing site. When I perform the search I am getting the results using the query you mentioned {searchTerms?} (contentclass:STS_List_850) path:https://authoringsiteURL. But my question is whether I can show the publishing URL instead of authoring URL in the search result.Anonymous
January 01, 2003
Hi Mahesh,
Could you give me some more information about your scenario? Specifically, when you click on a search result, are you taken to the item in the authoring site, or are you redirected to the correct page on the publishing site?
BellaAnonymous
January 01, 2003
Hi Luca,
I'm not sure I completely understand your scenario. From where do you want your users to search, and are you using the Search Results Web Part to display your results?
BellaAnonymous
December 17, 2013
No matter what i do with building the query, I get the following error, and the feature referenced is activated:The Search display templates are not present on this site collection. To add them, you need to activate the "Search Server Web Parts and Templates" feature on the Site Collection Features page.Correlation ID: 744e619c-a77a-205e-8df1-3232307431a4Display Error: The display template had an error. You can correct it by fixing the template or by changing the display template used in either the Web Part properties or Result Types.Template '~sitecollection/_catalogs/masterpage/Display Templates/System/Control_QueryBuilderPreview.js' not found or has syntax errors. (LoadTemplate: )Anonymous
February 03, 2014
The comment has been removedAnonymous
February 04, 2014
Search recommodation to user based on their past visit, setting for relevancy,activities etc Any help.Anonymous
May 15, 2014
Pingback from SharePoint Search | Share your knowledgeAnonymous
July 28, 2014
Hi,
How can I use Now() to compare date/Time field, instead of using {Today()} in my Search query?Anonymous
July 29, 2014
Hi Bella,
I want to display Item with PressDate less than or equal to current time in my search result webpart.
{searchTerms} ContentType="ABC" PressDateTime<{Today+1}
Above query not supporting for Now(), due to that it is showing items which are less than or equal to current (today's) date.
How can I check time with current system Time?..ThanksAnonymous
July 29, 2014
Hi,
It is possible to configure search results web part to retrieve items from a single specific list?
ThanksAnonymous
August 06, 2014
Hi Bella,
any luck on my query? or any suggestion?Anonymous
September 01, 2014
The comment has been removedAnonymous
September 02, 2014
Hi Bella,
My apologies for not being clear. My category page has the CSWP and I have configured Control and Item Display Templates as well as refiners. It all works very well as you have explained. So, when I click on one of the page navigation links in the publishing site, I get the corresponding category page showing the appropriate items. If I want to refine the set of items, I can use a refiner, but this implies using a pre-configured property for refinement. Say there are many items on the page, and I know that the ones I want have the word "extra" somewhere in their "Description" column. How do I set up a refiner to do this? So I want a refiner, where I can type in the word "extra". I hope this makes more sense.
OlavAnonymous
September 02, 2014
Hi Bella,
Another squeak from me! I have tried to follow the first few stages of your blogs, but defined my own site column of type Managed Metadata which I am hoping will play the role of "Item Category". However, it does not appear in the Navigation Hierarchy drop down list in the Catalog Settings page for the authoring library. Is there a something I need to configure so that my site column behaves like "Item Category"?
Thanks once again,
OlavAnonymous
September 03, 2014
Thanks Bella - You're a star! Please publish lots more blogs!Anonymous
September 03, 2014
Hi Bella,
I have just discovered something in relation to the multiple values restriction: In order to have the Managed Metadata column appear under Navigation Hierarchy, it must be single valued, as you mentioned above. Once you have set up the catalog on the authoring side and then connected to it on the publishing side, you can change the definition of the Managed Metadata column to be multiple valued. The publishing then works exactly as you would expect with the item tagged with multiple terms appearing on multiple category pages. Perhaps most experts already know this, but I haven't read it anywhere, so thought it might be useful to add it here.
OlavAnonymous
September 05, 2014
Hi I'm having the same issue as darsh way up at the top of the comments. Once you add property filters to your basic query, when you navigate to the page, it is showing all results even if no search term is entered. Is there any way to have the search results show nothing until a user actually enters a search term?Anonymous
September 25, 2014
Hello,
I am looking for a way to search projects in our MS Project server 2013. I have seen that I can configure the search engine of the associated sharepoint (source, result, etc...)
Is it possible? easy to configure? any template or add-on to use ?
Thanks
AlainAnonymous
November 10, 2014
Hi Bella,
Thanks for wriitng so informative blogs with minute details. For beginners like me its next to bible.
Keep the great work up..!!! :)Anonymous
November 21, 2014
Hi Bella,
This article is so helpful, thanks very much!
I'm having the same problem as Optimas and Darsh. All of the results appear as soon as I add my SRWP. Before I've even performed a search. For my users, I'd like the results list to be empty until they type a search term and click Search.
Here's what I have:
My Result Source is just a path to a document library on another site, and looks like this: {searchTerms?} path:http://
When I go to the SRWP Test tab, as you mentioned above (go to your search results page, edit your SRWP, go to the TEST tab, and there Show more.), I see only this: path:http://
I tried adding the query rule ({?{searchTerms} }) but that didn't seem to help.
Do you have any ideas?
Thank you for your help, and thanks for doing this post!
LisaAnonymous
November 26, 2014
Thanks for the reply Bella. I am using the Refiners tab/webpart. But rather than return results from all companies before the user checks a refiner, I'd like the search results to default to a particular refiner value (Company A). I know I can limit the results via the result source, but then the results are limited to only that particular company value. I'd like for the results to be refined by default to Company A, but if the user wants to change to another company, they can select Company B in the refinement panel. Is there another way to achieve this that you know of?Anonymous
March 02, 2015
Hi Bella,
I think this is exactly what I'm after, but am having some trouble getting this to work on my site.
The path my site is set up on it https:// rather than just the http:// Will this be why it won't work for me?
I'm at the point of build your query, but the search results just return 0 if I remove the 's' or "Sorry something went wrong" if I enter the path
{searchTerms?} (contentclass:STS_ListItem OR IsDocument:True) path:https://
Thanks for any help.Anonymous
March 24, 2015
I'm using this in a cross site publishing scenario. My results show up but when I click the link to display the item, I get a blank page. If I change my catalog connection to take me directly to the item it works (obviously this is a public site and that is not optimal) Any suggestions?Anonymous
April 07, 2015
Hi Bella!
Thanks for this article.
It is possible to build a custom query for the "Find an Item" and "Find a file" searchbox?Anonymous
April 28, 2015
Hi Bella,
I am working on Cross Site publishing model and as per the model I have all the content in the Authoring site and would like to provide the search page in publishing site for getting the contents from authoring. I am getting those content but search result returns the Authoring site content which points to authoring site URL while returning the results. Is there any way that I can show the search result with Publishing URLs? Please guide how to achieve this?Anonymous
October 02, 2015
Pingback from Plan to use refiners on a search results page in SharePoint 2013 | SharePoint Interests