From 5489d45558fc4dbd65176829ea8fdd53ba941367 Mon Sep 17 00:00:00 2001 From: Kevin Wenger Date: Fri, 9 Feb 2024 14:23:40 +0100 Subject: [PATCH] add true random search when no parameters (excepted pager )are given on search - Games-of-Switzerland/swissgamesgarden#127 --- CHANGELOG.md | 3 +++ .../Plugin/rest/resource/ElasticGamesResource.php | 13 +++++++++++++ 2 files changed, 16 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 923a7b86..bda036d0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - remove caches on both Search & Autocomplete endpoints (Elasticsearch) +### Added +- add true random search when no parameters (excepted pager )are given on search - Games-of-Switzerland/swissgamesgarden#127 + ## [0.6.0] - 2024-02-09 ### Changed - move Linters php-deprecation-detector, php-cs-fixer & psalm into own Tools/ComposerJson diff --git a/web/modules/custom/gos_elasticsearch/src/Plugin/rest/resource/ElasticGamesResource.php b/web/modules/custom/gos_elasticsearch/src/Plugin/rest/resource/ElasticGamesResource.php index 3f0e548e..169881fe 100644 --- a/web/modules/custom/gos_elasticsearch/src/Plugin/rest/resource/ElasticGamesResource.php +++ b/web/modules/custom/gos_elasticsearch/src/Plugin/rest/resource/ElasticGamesResource.php @@ -120,6 +120,19 @@ public function get(Request $request): CacheableJsonResponse { $index = $this->elasticsearchPluginManager->createInstance(self::ELASTICSEARCH_PLUGIN_ID); $es_query = $this->buildBaseGamesElasticsearchQuery($index, $resource_validator); + // When no parameters (excepted pager) have been submitted, + // then the order must be random. + // This is intended to be used on Homepage only. + if ($resource_validator->getRaw() === ['page' => '0']) { + $es_query['body']['sort'] = [ + '_script' => [ + 'script' => 'Math.random()', + 'type' => 'number', + 'order' => 'asc', + ], + ]; + } + // Add the sort property. if (!empty($resource_validator->getSort())) { $es_query['body']['sort'] = $this->addSort($resource_validator->getSort());