diff --git a/apachesolr.index.inc b/apachesolr.index.inc
index c533a9f..96027b4 100644
--- a/apachesolr.index.inc
+++ b/apachesolr.index.inc
@@ -442,7 +442,7 @@ function _apachesolr_index_process_entity_get_document($entity, $entity_type) {
   $languages = language_list();
   $url_options = array('absolute' => TRUE);
   if (isset($entity->language) && isset($languages[$entity->language])) {
-    $url_options = $url_options + array('language' => $languages[$entity->language]);
+    $url_options['language'] = $languages[$entity->language];
   }
 
   $document->id = apachesolr_document_id($entity_id, $entity_type);
diff --git a/apachesolr_search.module b/apachesolr_search.module
index 5b8637d..08d9150 100644
--- a/apachesolr_search.module
+++ b/apachesolr_search.module
@@ -1108,6 +1108,7 @@ function apachesolr_search_basic_params(DrupalSolrQueryInterface $query = NULL)
         'bundle',
         'bundle_name',
         'label',
+        'language',
         'is_comment_count',
         'ds_created',
         'ds_changed',
@@ -1257,6 +1258,7 @@ function apachesolr_search_process_response($response, DrupalSolrQueryInterface
   pager_default_initialize($total, $query->getParam('rows'));
   if ($total > 0) {
     $fl = $query->getParam('fl');
+    $languages = language_list();
     // 'id' and 'entity_type' are the only required fields in the schema, and
     // 'score' is generated by solr.
     foreach ($response->response->docs as $doc) {
@@ -1327,20 +1329,14 @@ function apachesolr_search_process_response($response, DrupalSolrQueryInterface
       }
 
       $fields = (array) $doc;
-
-      // a path is not a requirement of entity (see entity_uri() ), so we check if we
-      // can show it and fallback to the main page of the site if we don't
-      // have it.
-      if (!isset($doc->url)) {
-        $path = '';
-      }
-      else {
-        $path = $doc->url;
+      // Define our url options. They depend on the document language.
+      $url_options = array('absolute' => TRUE);
+      if (isset($doc->language) && isset($languages[$doc->language])) {
+        $url_options['language'] = $languages[$doc->language];
       }
-
       $result = array(
         // link is a required field, so handle it centrally.
-        'link' => $path,
+        'link' => url($doc->path, $url_options),
         // template_preprocess_search_result() runs check_plain() on the title
         // again.  Decode to correct the display.
         'title' => htmlspecialchars_decode($doc->label, ENT_QUOTES),
