From 529f7bb2202f0986e57d1215732617e10ff41526 Mon Sep 17 00:00:00 2001 From: Demian Katz <demian.katz@villanova.edu> Date: Wed, 22 Jul 2015 14:25:57 -0400 Subject: [PATCH] Added facet_limit_by_field support for Summon. --- config/vufind/Summon.ini | 7 +++++-- module/VuFind/src/VuFind/Search/Summon/Params.php | 6 +++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/config/vufind/Summon.ini b/config/vufind/Summon.ini index d1e311c13ca..c8d1cbef54d 100644 --- a/config/vufind/Summon.ini +++ b/config/vufind/Summon.ini @@ -122,7 +122,7 @@ queryExpansion:true = include_synonyms ; ; The name of the index field may optionally be followed by comma-separated ; parameters (i.e. ",or,1,15") as defined by the Summon API. Any provided -; parameters will override defaults like the facet_limit setting in +; parameters will override defaults like the facet_limit* settings in ; [Facet_Settings] below. [Facets] Library = Location @@ -159,7 +159,10 @@ top_cols = 3 ; These settings affect the way the facets are displayed [Facet_Settings] -facet_limit = 30 ; how many values should we show for each facet? +; By default, how many values should we show for each facet? +facet_limit = 30 +; Override facet_limit on a per-field basis using this array: +;facet_limit_by_field[ContentType] = 50 ; These facets will be displayed as limiters on the advanced screen [Advanced_Facets] diff --git a/module/VuFind/src/VuFind/Search/Summon/Params.php b/module/VuFind/src/VuFind/Search/Summon/Params.php index 10d9ea26952..40962ec706a 100644 --- a/module/VuFind/src/VuFind/Search/Summon/Params.php +++ b/module/VuFind/src/VuFind/Search/Summon/Params.php @@ -200,6 +200,8 @@ class Params extends \VuFind\Search\Base\Params $config = $this->getServiceLocator()->get('VuFind\Config')->get('Summon'); $defaultFacetLimit = isset($config->Facet_Settings->facet_limit) ? $config->Facet_Settings->facet_limit : 30; + $fieldSpecificLimits = isset($config->Facet_Settings->facet_limit_by_field) + ? $config->Facet_Settings->facet_limit_by_field : null; $finalFacets = []; foreach ($this->getFullFacetSettings() as $facet) { @@ -207,10 +209,12 @@ class Params extends \VuFind\Search\Base\Params // if not, override them with defaults. $parts = explode(',', $facet); $facetName = $parts[0]; + $bestDefaultFacetLimit = isset($fieldSpecificLimits->$facetName) + ? $fieldSpecificLimits->$facetName : $defaultFacetLimit; $defaultMode = ($this->getFacetOperator($facet) == 'OR') ? 'or' : 'and'; $facetMode = isset($parts[1]) ? $parts[1] : $defaultMode; $facetPage = isset($parts[2]) ? $parts[2] : 1; - $facetLimit = isset($parts[3]) ? $parts[3] : $defaultFacetLimit; + $facetLimit = isset($parts[3]) ? $parts[3] : $bestDefaultFacetLimit; $facetParams = "{$facetMode},{$facetPage},{$facetLimit}"; $finalFacets[] = "{$facetName},{$facetParams}"; } -- GitLab