diff --git a/module/VuFind/src/VuFind/Search/Factory/AbstractSolrBackendFactory.php b/module/VuFind/src/VuFind/Search/Factory/AbstractSolrBackendFactory.php
index 38a2758ef12f9323ac22f48f9d588fcce14a069e..3f395dd97999d56dab4a67b7681bb8ede26a718e 100644
--- a/module/VuFind/src/VuFind/Search/Factory/AbstractSolrBackendFactory.php
+++ b/module/VuFind/src/VuFind/Search/Factory/AbstractSolrBackendFactory.php
@@ -97,6 +97,13 @@ abstract class AbstractSolrBackendFactory implements FactoryInterface
      */
     protected $solrCore = '';
 
+    /**
+     * Solr field used to store unique identifiers
+     *
+     * @var string
+     */
+    protected $uniqueKey = 'id';
+
     /**
      * Constructor
      */
@@ -254,7 +261,9 @@ abstract class AbstractSolrBackendFactory implements FactoryInterface
             }
         }
 
-        $connector = new Connector($this->getSolrUrl(), new HandlerMap($handlers));
+        $connector = new Connector(
+            $this->getSolrUrl(), new HandlerMap($handlers), $this->uniqueKey
+        );
         $connector->setTimeout(
             isset($config->Index->timeout) ? $config->Index->timeout : 30
         );
diff --git a/module/VuFindSearch/src/VuFindSearch/Backend/Solr/Connector.php b/module/VuFindSearch/src/VuFindSearch/Backend/Solr/Connector.php
index d49a7d7591774a059817977594ad0fa9fe7909ed..e12b974dde2f10f421b7f8f680a346b9e61884bd 100644
--- a/module/VuFindSearch/src/VuFindSearch/Backend/Solr/Connector.php
+++ b/module/VuFindSearch/src/VuFindSearch/Backend/Solr/Connector.php
@@ -95,6 +95,13 @@ class Connector
      */
     protected $map;
 
+    /**
+     * Solr field used to store unique identifier
+     *
+     * @var string
+     */
+    protected $uniqueKey;
+
     /**
      * HTTP read timeout.
      *
@@ -121,15 +128,17 @@ class Connector
     /**
      * Constructor
      *
-     * @param string     $url SOLR base URL
-     * @param HandlerMap $map Handler map
+     * @param string     $url       SOLR base URL
+     * @param HandlerMap $map       Handler map
+     * @param string     $uniqueKey Solr field used to store unique identifier
      *
      * @return void
      */
-    public function __construct($url, HandlerMap $map)
+    public function __construct($url, HandlerMap $map, $uniqueKey = 'id')
     {
         $this->url = $url;
         $this->map = $map;
+        $this->uniqueKey = $uniqueKey;
     }
 
     /// Public API
@@ -165,7 +174,8 @@ class Connector
     public function retrieve($id, ParamBag $params = null)
     {
         $params = $params ?: new ParamBag();
-        $params->set('q', sprintf('id:"%s"', addcslashes($id, '"')));
+        $params
+            ->set('q', sprintf('%s:"%s"', $this->uniqueKey, addcslashes($id, '"')));
 
         $handler = $this->map->getHandler(__FUNCTION__);
         $this->map->prepare(__FUNCTION__, $params);
@@ -186,7 +196,8 @@ class Connector
     public function similar($id, ParamBag $params = null)
     {
         $params = $params ?: new ParamBag();
-        $params->set('q', sprintf('id:"%s"', addcslashes($id, '"')));
+        $params
+            ->set('q', sprintf('%s:"%s"', $this->uniqueKey, addcslashes($id, '"')));
         $params->set('qt', 'morelikethis');
 
         $handler = $this->map->getHandler(__FUNCTION__);