I was discussing SharePoint Search previews of images on Twitter with
Jasper Oosterveld . The discussion made me look into image previews in search results. As a result, I looked at various options and functionality to this regard. I am splitting these posts into at least two parts so I can get part of my solution out as soon as possible. This post solves the previewing of images that are not in Picture Libraries.
UPDATE: Get the source files here
Previewing of Images Not Stored in Picture Libraries
Problem #1: Image Search Results Are List Items
When images are stored in "regular" document libraries such as Site Assets, they are uploaded as documents. When the library is crawled, the results are the actual list item and not the image itself. Even if you add the Image or Picture content type to the library and modify the item, the result is still treated like a list item.
Solution to Problem #1: Add Image File Types to Search
The reason the images are coming back as items is because image file types such as .jpg and .gif are not in the list of the search file types.
So you need to go to Central Administration and modify the Search Service Application. On the left hand side click on File Types:
On the File Types page, click on New File Type:
Enter an image file type such as jpg and click ok:
Repeat the process for other image types you want to handle.
Now go to the document library that contains the images and select Library settings from the Library top ribbon:
On the Settings page, click on Advanced Settings:
Scroll down and find the Reindex Document Library button and click it:
In the dialog that appears, click Reindex Document Library:
Click OK on the Advanced Settings page.
Now return to your Search Service Application and run an incremental crawl on the main content source:
After the crawl is completed, the search results of the images should appear as their filename instead of a list item. That solves that problem but the hover is still the Default hover template and doesn't show an image preview.
Problem #2: Image Search Results Hover Doesn't Show Preview
Now that the search is crawling image types, the results display the image file but the hover is using the default item template and no image appears.
UPDATE: You do not need to go through the modification of the default hover although I did in the beginning before I figured out all that was happening. The overall cause of this issue is that Image result type uses the Default Item template and not the Picture template. My solutions in
Part II and
Part III explain how do implement this better.
Solution to Problem #2: Modify the Default Hover Panel Display Template
The solution here is to modify the hover display template that is being used for default items. This can be easily performed using SharePoint Designer 2013. Follow the steps to get to the Display Templates as I have outlined
previously.
This time, edit the Item_Default_HoverPanel.html file. Replace the RenderBody section with the following code:
<!--#_
if(ctx.CurrentItem.FileExtension == "jpg" || ctx.CurrentItem.FileExtension == "gif"){
_#-->
<div class="ms-srch-hover-imageContainer">
<img id="_#= ctx.CurrentItem.csr_id =#_" src="_#= $urlHtmlEncode(ctx.CurrentItem.Path) =#_" onload="this.style.display='block';" />
</div>
<!--#_
}
else {
_#-->
<div id="_#= $htmlEncode(id + HP.ids.body) =#_" class="ms-srch-hover-body">
_#= ctx.RenderBody(ctx) =#_
</div>
<!--#_
}
_#-->
You may add more conditions for each file type you want to handle. You could also check the content type however, by default, the images loaded to Site Assets are documents. So if you want to capture all images I would use the file extension check.
Save those changes and then perform a search. Hover over the image results:
But that's not all folks. If you have Picture Libraries you could have even better results and previews but then that change will negate the solution provided here. I discuss this functionality and customization in my