diff --git apachesolr.module apachesolr.module
index 5dcc73b..8c678f3 100644
--- apachesolr.module
+++ apachesolr.module
@@ -1911,8 +1911,11 @@ function apachesolr_do_query($caller, DrupalSolrQueryInterface $current_query, $
     }
   }
   // We must run htmlspecialchars() here since converted entities are in the index.
-  // and thus bare entities &, > or < won't match.
-  $response = $query->search(htmlspecialchars($keys, ENT_QUOTES, 'UTF-8'));
+  // and thus bare entities &, > or < won't match. Single quotes are converted
+  // too, but not double quotes since the dismax parser looks at them for
+  // phrase queries.
+  $keys = str_replace("'", '&#039;', $keys);
+  $response = $query->search(htmlspecialchars($keys, ENT_NOQUOTES, 'UTF-8'));
   // The response is cached so that it is accessible to the blocks and anything
   // else that needs it beyond the initial search.
   apachesolr_static_response_cache($response, $caller);
