diff -urp apachesolr-current/apachesolr.module apachesolr-patched/apachesolr.module
--- apachesolr-current/apachesolr.module	2010-09-01 18:32:31.000000000 +0200
+++ apachesolr-patched/apachesolr.module	2010-11-01 11:49:57.000000000 +0100
@@ -1777,12 +1777,17 @@ function apachesolr_l($text, $path, $opt
   $query = apachesolr_current_query();
   $get = array_diff_key($_GET, array('q' => 1, 'page' => 1), $options['query'], $query->get_url_queryvalues());
   $options['query'] += $get;
+  // Decode html entities before sending through check_plain
+  $text = html_entity_decode($text);
 
   return '<a href="'. check_url(url($path, $options)) .'"'. drupal_attributes($options['attributes']) .'>'. ($options['html'] ? $text : check_plain($text)) .'</a>';
 }
 
 function theme_apachesolr_unclick_link($facet_text, $path, $options = array()) {
   if (empty($options['html'])) {
+    // Decode html entities in $facet_text before running through check_plain().
+    // This helps to avoid double encoded apersands.
+    $facet_text = html_entity_decode($facet_text);
     $facet_text = check_plain($facet_text);
   }
   else {
