From 524c56ba7f00e0f9270503e4c7e1a5ed3f77a260 Mon Sep 17 00:00:00 2001
From: Demian Katz <demian.katz@villanova.edu>
Date: Thu, 5 Mar 2020 09:44:10 -0500
Subject: [PATCH] Add option to configure solr backend default field list
 (#1568)

- Also includes change to default fl from "*,score" to "*" since score is unused.
---
 config/vufind/Search2.ini                                    | 1 +
 config/vufind/authority.ini                                  | 1 +
 config/vufind/reserves.ini                                   | 1 +
 config/vufind/searches.ini                                   | 5 +++++
 config/vufind/website.ini                                    | 1 +
 .../src/VuFind/Search/Factory/AbstractSolrBackendFactory.php | 4 +++-
 6 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/config/vufind/Search2.ini b/config/vufind/Search2.ini
index a1cb2eea47c..62a0493c6cd 100644
--- a/config/vufind/Search2.ini
+++ b/config/vufind/Search2.ini
@@ -62,6 +62,7 @@ retain_filters_by_default = true
 ;default_filters[] = "format:Book"
 ;default_filters[] = "institution:MyInstitution"
 ;default_filters[] = "(format:Book AND institution:MyInstitution)"
+;default_record_fields = "*,score"
 
 [Cache]
 type = File
diff --git a/config/vufind/authority.ini b/config/vufind/authority.ini
index 71290d9f35c..2300bb1d2a5 100644
--- a/config/vufind/authority.ini
+++ b/config/vufind/authority.ini
@@ -5,6 +5,7 @@ default_handler      = AllFields    ; Search handler to use if none is specified
 default_sort         = relevance
 case_sensitive_bools = true
 default_side_recommend[] = SideFacets:Facets:CheckboxFacets:authority
+;default_record_fields = "*,score"
 
 [Basic_Searches]
 AllFields           = "All Fields"
diff --git a/config/vufind/reserves.ini b/config/vufind/reserves.ini
index 6341d532692..38812f6bbcb 100644
--- a/config/vufind/reserves.ini
+++ b/config/vufind/reserves.ini
@@ -6,6 +6,7 @@ default_sort         = relevance
 case_sensitive_bools = true
 default_side_recommend[] = SideFacets:Facets:CheckboxFacets:reserves
 facet_limit = 20
+;default_record_fields = "*,score"
 
 [Basic_Searches]
 AllFields           = "All Fields"
diff --git a/config/vufind/searches.ini b/config/vufind/searches.ini
index 7bab51898c9..28a1223260b 100644
--- a/config/vufind/searches.ini
+++ b/config/vufind/searches.ini
@@ -104,6 +104,11 @@ retain_filters_by_default = true
 ;default_filters[] = "institution:MyInstitution"
 ;default_filters[] = "(format:Book AND institution:MyInstitution)"
 
+; Default record fields to fetch from Solr when searching (Solr parameter 'fl')
+; Default is "*" (since VuFind 7.0). To restore previous setting, just uncomment
+; line below.
+;default_record_fields = "*,score"
+
 [Cache]
 ; This controls whether the parsed searchspecs.yaml file will be stored to
 ; improve search performance; legal options are APC (use APC cache), File (store
diff --git a/config/vufind/website.ini b/config/vufind/website.ini
index 011fa32cce9..4c41c1959eb 100644
--- a/config/vufind/website.ini
+++ b/config/vufind/website.ini
@@ -9,6 +9,7 @@ default_side_recommend[] = CatalogResults
 highlighting = true
 snippets = true
 retain_filters_by_default = true
+;default_record_fields = "*,score"
 
 [Basic_Searches]
 AllFields           = "All Fields"
diff --git a/module/VuFind/src/VuFind/Search/Factory/AbstractSolrBackendFactory.php b/module/VuFind/src/VuFind/Search/Factory/AbstractSolrBackendFactory.php
index 307b7aa49c7..146dc66ba6b 100644
--- a/module/VuFind/src/VuFind/Search/Factory/AbstractSolrBackendFactory.php
+++ b/module/VuFind/src/VuFind/Search/Factory/AbstractSolrBackendFactory.php
@@ -339,11 +339,13 @@ abstract class AbstractSolrBackendFactory implements FactoryInterface
     protected function createConnector()
     {
         $config = $this->config->get($this->mainConfig);
+        $searchConfig = $this->config->get($this->searchConfig);
+        $defaultFields = $searchConfig->General->default_record_fields ?? '*';
 
         $handlers = [
             'select' => [
                 'fallback' => true,
-                'defaults' => ['fl' => '*,score'],
+                'defaults' => ['fl' => $defaultFields],
                 'appends'  => ['fq' => []],
             ],
             'terms' => [
-- 
GitLab