Tag Archives: SharePoint Search

Missing Search Results In SharePoint 2013 When Using A Content Enrichment Web Service

Users reported that they couldn’t find a few specific documents when searching within SharePoint 2013.  Checking the crawl log showed documents with the error “The item failed due to an error occurring when sending or receiving data to the external content processing enrichment web service.”  I searched the ULS for one of the effected documents and found the error “System.Net.WebException: The remote server returned an error: (413) Request Entity Too Large.”  Checking the web.config for the content enrichment web service showed the maxReceivedMessageSize value was configured to 8 MB.

TWCEWS0

 

To resolve the error I increased the value of the maxReceivedMessageSize property and re-indexed the document library.

The interesting thing about this case is that the content enrichment web service is designed to add additional metadata to documents.  When the content enrichment web service failed to receive documents over 8 MB the documents didn’t appear within search at all, it wasn’t just the case that they appeared but without the extra metadata.

Configure SharePoint 2013 Search Index Managed Property Sizes

If you check the crawl logs for SharePoint 2013 you may see warnings similar to those below:

The item has been truncated in the index because it exceeds the maximum size.

This item was partially parsed. The item has been truncated in the index because it exceeds the maximum size.

This item was truncated because the parsed output was greater than the maximum number of allowed characters.

Microsoft have detailed the SharePoint 2013 Search boundaries and limits here and I’ll show how these boundaries and limits relate to the warnings above.

The item has been truncated in the index because it exceeds the maximum size.

This message relates to the indexed managed property size and according to the aforementioned documentation “This is the default maximum size of a managed property that is set to either “searchable” or “queryable”.”  The property limit can be configured between 0 and 2048KB.

In order to change the limit open an elevated SharePoint 2013 Management Shell.  To get the current property value run the code below.

$p = Get-SPEnterpriseSearchMetadataManagedProperty -Identity body -SearchApplication (Get-SPEnterpriseSearchServiceApplication)
$p.MaxCharactersInPropertyStoreIndex

SMP0

 

To change the property value run the code below, substituting the value for your own requirements.

$prop1 = Get-SPEnterpriseSearchMetadataManagedProperty -Identity body -SearchApplication (Get-SPEnterpriseSearchServiceApplication)
$prop1.MaxCharactersInPropertyStoreIndex = “2048000”
$prop1.Update()

SMP1

 

This item was partially parsed. The item has been truncated in the index because it exceeds the maximum size.

This message  relates to the retrievable managed property size and according to the aforementioned documentation “This is the default maximum size of a retrievable managed property.”  The property limit can be configured between 0 and 2048KB.

In order to change the limit open an elevated SharePoint 2013 Management Shell.  To get the current property value run the code below.

$p = Get-SPEnterpriseSearchMetadataManagedProperty -Identity body -SearchApplication (Get-SPEnterpriseSearchServiceApplication)
$p.MaxCharactersInPropertyStoreForRetrieval

SMP2

 

To change the property value run the code below, substituting the value for your own requirements.

$prop2 = Get-SPEnterpriseSearchMetadataManagedProperty -Identity body -SearchApplication (Get-SPEnterpriseSearchServiceApplication)
$prop2.MaxCharactersInPropertyStoreForRetrieval = “2048000”
$prop2.Update()

SMP3

 

This item was truncated because the parsed output was greater than the maximum number of allowed characters.

This message relates to the parsed content size of the document.  This has a boundary limit of 2 million characters that can’t be increased.  Search stops parsing a document once the limit of 2 million characters has been reached and any content past this point isn’t included in the index.

Once you’ve configured the indexed managed property and retrievable managed property sizes you need to run a full crawl.

Search By Document ID In SharePoint 2013

The SharePoint Document ID Service is a Site Collection Feature which assigns unique IDs to documents within a Site Collection.  The unique document ID can be used to locate documents within a Site Collection irrespective of their location.  This is useful when documents may be moved around within a Site Collection due to work flows, or other processes.

To search by document ID, open the Service Service Application through Central Administration, then open the search schema, which is under Queries and Results.  Search for DocID in the managed properties box.

DocID0

 

The search results should return a managed property with the name DocID and the Query property should be enabled.  The property should be mapped to the crawled property ows_dlc_DocId.

The Query property enables the ability to search specifically by the property.  Open your search center and in the search box enter DocID:%DOCID% where you replace %DOCID% with the document ID for which you wish to search.

Here I have a document with the ID RSTST-7-144

DocID1

I have found the document using the search term DocId:RSTST-7-144

DocID2

 

Changing The Default Number Of Refiner Options In SharePoint 2013 Search

By default, SharePoint 2013 Search shows 5 options for each refiner, except result type, which has 6 options.

RefinerCount0

In order to change the number of options you need to edit the Filter_Default.html display template.  Do to this open Site settings, then Master pages and page layouts.  Drill through to  Display Templates -> Filters.  Download a copy of Filter_Default.html.

RefinerCount1Open Filter_Default.html in a text editor and find the two values below.

RefinerCount2

Change the values for shortListSize as required and save the file.  Upload the file to the document library where you downloaded the copy and overwrite the existing file.  Refresh the search page to see the change.

RefinerCount3

 

SharePoint 2013 Content Search Web Part: One or more of the following resource files failed to load

When adding the Content Search Web Part to a site for the first time, the web part took a while to load, then displayed the error:

One or more of the following resource files failed to load: /_catalogs/masterpage/display templates/language files/en-GB/customstrings.js?ctag=322$$15.0.4569.1000

CSWP0

To look for the missing file I went to Site Settings, then Master page and page layouts, which is under the heading Web Designer Galleries.  On that page I navigated through Display Templates -> Language Files.  I could see that for some reason the en-GB folder was missing.

CSWP1

The fact that the folder was missing was odd because I’d used the Content Search Web Part before within the Site Collection.  Anyway, to resolve the error I created the en-gb folder and copied customstrings.js from the en-us folder and pasted it into en-gb.

CSWP2

Enable Searching For SharePoint 2013 Asset Library Items Using Keywords

Within SharePoint 2013 you have the ability to create an Asset Library.  This is a special type of SharePoint library, which is optimised for the storing of image, audio, or video files.  If you’re not familiar with this type of library take a look at this TechNet article.

One of the nice features of the Asset Library is the keywords column.  This enables you to assign metadata in the form of keywords, which can help with the discovery of library items using search.  For example, an image of an car could have the keywords transport or vehicle assigned to it.  Then, if a user searched for car, transport, or vehicle they would find the image.

I’m going to show the configuration required to enable searching for items using keywords.  Firstly, open the Asset Library settings and check the name of the keywords column.

AssetLibraryKeywordSearch

Next, navigate to Central Administration and open the Search Service Application from Application Management > Manage service applications.  Open the Search Schema.

AssetLibraryKeywordSearch2

Click on Crawled Properties and enter keywords, then click the green arrow to search.

AssetLibraryKeywordSearch4

Click on the managed property called Keywords.  On the page that loads, tick the Searchable box and click Ok to save the changes.  Now, re-index the Asset Library, open the library settings, then Advanced settings.

AssetLibraryKeywordSearch5

Once the crawl has completed you’ll be able to search for images using keywords.

 

SharePoint 2013 Search – The Chart Cannot Be Rendered

Opening SharePoint 2013 Search Service Application and viewing the crawl health reports results in the error “The chart cannot be rendered. This may be due to a misconfiguration of the Microsoft SharePoint Server State Service. For more information, contact your server administrator. ”

In order to resolve this error run the commands below from and elevated SharePoint PowerShell 2013 management shell.

$Service = New-SPStateServiceApplication -Name “State Service”
New-SPStateServiceDatabase -Name “State Service DB” -ServiceApplication $Service
New-SPStateServiceApplicationProxy -Name “State Service Proxy” -ServiceApplication $Service -DefaultProxyGroup

Viewing SharePoint 2013 Search Duplicates

SharePoint 2013 search hides duplicate results by default.  In order to view duplicate search results following the following steps.

Edit the search result page and edit the Search Results web part

SearchDuplicates1

 

Expand the Settings section and tick the box for “Show View Duplicates link”.

SearchDuplicates2

Save the setting and publish the page.  When you search for a term, hover over a search result.  In the panel that loads click on VIEW DUPLICATES.

SearchDuplicates3

 

For information on how SharePoint calculates duplicates see this blog post.

Extend SharePoint 2013 People Search Using Business Connectivity Services Part 4

In this four part series I will describe the process of extending the SharePoint 2013 user profile from Active Directory with additional data from a SQL Server table.  The additional data will then be displayed in users’ My Sites and SharePoint people search.

Part 1 will show the process to create the SQL Server table.  Part 2 will show the process to make the data in the SQL Server table accessible to SharePoint.  Part 3 will show the process to extend user profiles and My Sites to include the additional user data.  Part 4 will show the process to make the new user profile properties accessible in SharePoint Search.

The SharePoint environment is SharePoint 2013 Standard, with SQL Server 2008 R2 and SharePoint Designer 2013.  The steps are based on an environment where the User Profile Service has already been setup, users have been imported from Active Directory and My Sites have been configured.  It is assumed that SharePoint Search has been configured and a search site using the Enterprise Search Center template has been created.

In this post I’ll describe the process of making the custom user profile properties you populated in the last post visible within SharePoint Search.

Open Central Administration -> Application Management -> Manage service applications and open your Search Service Application.  Click on Content Sources, then click on the drop down for your user profile content source and run start an incremental crawl.

BCS - Search1

Once the crawl has completed click on Search Schema under Queries and Results.

BCS - Search2

Click on Crawled Properties, then in the managed property box search for one of your custom user profile properties.

BCS - Search3

Your custom property should be listed as People:XXXX as the property was added as a user property.  Click on the custom property and check the Include in full-text index box is ticked.

BCS - Search4

Return to the Managed Properties screen and click on New Managed Property.

BCS - Search7

Enter a property name, e.g. Jurisdiction and select the correct data type.

BCS - Search8

There are many options to experiment in this screen, but as a minimum for this example tick Queryable (this appears to be a requirement for the refiner option), Retrievable, which allows us to display the property in search results and set Refinable to Yes – active as I want to be able to refine search results using this custom property.  Finally, map this new managed property to the custom user profile property and click Ok.

BCS - Search9 BCS - Search10

Repeat these steps for all the other custom properties you wish to use in search.  Once you’ve created all your managed properties run a full crawl of your content source.

BCS - Search12

Once the full crawl has completed we need to add the custom properties to the list of refiners and search result.  Navigate to your search site and search for a user that will have the custom properties populated.

BCS - Search5

Edit the search results page, and click on Edit Web Part for the Refinement web part.

BCS - Search6

In the Properties for Search Refinement screen click on Choose Refiners.

BCS - Search11

From the screen that loads, select the custom property you wish to add as a refiner and click Add, then click Ok.

BCS - Search13

Click OK on the Properties for Search Refinement web part.  You should now see your new refiner.

BCS - Search14

If you’re happy check in and publish the page.

BCS - Search15

Now we I’m going to show you the process to display a custom property under the user’s details.  Edit the Search page and click on the display template link.

BCS-SDT1

On the display template page choose to download a copy of the existing People Item template.

BCS-SDT2

Create a copy of the downloaded template and open it in a text editor like Notepad++.  Update the title field to indicate this is your custom display template.

BCS-SDT2.5

Add your custom user property name to the ManagedPropertyMapping section.

BCS-SDT3

Create a variable for your custom property.

BCS-SDT4

I’ve copied the department section and replaced the variable etc. with jurisdiction.  I’ve also added Jurisdiction:  in the value DIV as this will add a prefix to the value on the search result screen.

BCS-SDT5

Open SharePoint Designer, connect to your SharePoint site and navigate to Page Layouts -> Display Templates -> Search.  Click on Import Files in the ribbon and upload your custom display template.

BCS-SDT6

Navigate to the display template gallery and publish a major version of your template.

BCS-SDT7

Using the link on the search results page, open the Manage Result Types page.  Use the drop down for the Person result type to create a copy.

BCS-SDT8

Enter a name for the new result type and select your custom display template.

BCS-SDT9

In my environment the updated display template worked straight way.  However, if you need to change the display template, on the people search results page edit the web part properties on the People Search Core Results.

BCS-SDT10

Select your custom display template and save changes.

BCS-SDT11

You should now see the custom property in the search results.

BCS-SDT12

Troubleshooting

If you have problems getting this to work the following tools may help:

Monitor connections to the SQL Server during the user import task using SQL Server Profiler.  This will enable you to see if SharePoint is connecting to the SQL Server and the commands that are being run.

Monitor the user import process using Synchronization Manager Service, which can be found at “C:\Program Files\Microsoft Office Servers\15.0\Synchronization Service\UIShell\miisclient.exe”.

Monitor SharePoint logs using the ULSViewer.  You can create a filter to include results only from Business Data Connectivity Services. http://archive.msdn.microsoft.com/ULSViewer