That solution didn't work for me, but it pointed me in the right direction. What I found was that your code wasn't working because the IF statement a few lines up, that assigns a value to $image, wasn't being met. It seems it is basically checking for a slideshow? And if it doesn't find one, then the $image is left blank, so your code is never output (as it only runs if $image has a value).
So, what I've doing, going back to the original code, is to find:
if( is_array($slides) && !empty( $slides['slideshow_image'] ) )
$image = avia_image_by_id($slides['slideshow_image'], 'widget', 'image');
and replace with
if( get_the_post_thumbnail ( get_the_ID() ) )
$image = get_the_post_thumbnail( get_the_ID(), 'shop_catalog' );
The result is: http://ongward.com/?s=earring
Which is better, except for a couple things. One, I'm not sure if this code is the correct way to do it? Let me know what you think. Secondly, the image size is too small. I would like it to appear larger, but haven't figured that out yet. It may be that a CSS style is forcing it to that size? I thought doing something like get_the_post_thumbnail(get_the_ID(), 'large') would change the size, but it doesn't. I'm also not sure what "shop_catalog" is being used for in the function call to get the thumbnail. It works just the same if I remove or replace it? Lastly, I don't like how the description appears below the thumbnail, I want it to appear under the title text, to the right of the thumbnail. This should be some simple CSS modifications... I think. Hopefully I don't have to arrange the order of the output in the loop_search file.