diff --git a/config/vufind/Summon.ini b/config/vufind/Summon.ini index d1e311c13caebea9d422c7da229e528454d20e3c..c8d1cbef54dc6e8b53570e085208edabb3177021 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 10d9ea269526ec05cbdc9b609fb8c82737e8a210..40962ec706a30af84a5ffdae3af1285d0e18e7c8 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}"; }