From 0472d9617b6771c6b64ebbaa49953b5583d1d3c9 Mon Sep 17 00:00:00 2001 From: Viktor Bozhinov Date: Mon, 13 Feb 2023 16:21:30 +0000 Subject: [PATCH] feat(config): add scoring related values to config #398 BREAKING CHANGE: add scoring related values to config --- datagateway_api/config.yaml.example | 6 ++++++ datagateway_api/src/common/config.py | 9 +++++++++ datagateway_api/src/search_api/helpers.py | 8 ++++---- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/datagateway_api/config.yaml.example b/datagateway_api/config.yaml.example index 8d4ffe80..5224f796 100644 --- a/datagateway_api/config.yaml.example +++ b/datagateway_api/config.yaml.example @@ -15,6 +15,12 @@ search_api: mechanism: "anon" username: "" password: "" + search_scoring: + enabled: false + api_url: "http://localhost:9000/score" + api_request_timeout: 5 + group: "documents" #corresponds to the defined group in the scoring app. https://github.com/panosc-eu/panosc-search-scoring/blob/master/docs/md/PaNOSC_Federated_Search_Results_Scoring_API.md#model + limit: 1000 flask_reloader: false log_level: "DEBUG" log_location: "/home/runner/work/datagateway/datagateway/datagateway-api/datagateway_api/logs.log" diff --git a/datagateway_api/src/common/config.py b/datagateway_api/src/common/config.py index 6bf2b1df..9f190bb7 100644 --- a/datagateway_api/src/common/config.py +++ b/datagateway_api/src/common/config.py @@ -121,6 +121,14 @@ class Config: validate_assignment = True +class SearchScoring(BaseModel): + enabled: StrictBool + api_url: StrictStr + api_request_timeout: StrictInt + group: StrictStr + limit: StrictInt + + class SearchAPI(BaseModel): """ Configuration model class that implements pydantic's BaseModel class to allow for @@ -133,6 +141,7 @@ class SearchAPI(BaseModel): mechanism: StrictStr username: StrictStr password: StrictStr + search_scoring: SearchScoring _validate_extension = validator("extension", allow_reuse=True)(validate_extension) diff --git a/datagateway_api/src/search_api/helpers.py b/datagateway_api/src/search_api/helpers.py index 2eba5250..a18c1901 100644 --- a/datagateway_api/src/search_api/helpers.py +++ b/datagateway_api/src/search_api/helpers.py @@ -90,15 +90,15 @@ def get_score(entities, query): try: data = { "query": query, - "group": Config.config.search_api.scoring_group, - "limit": Config.config.search_api.scoring_limit, + "group": Config.config.search_api.search_scoring.group, + "limit": Config.config.search_api.search_scoring.limit, # With itemIds, scoring server returns a 400 error. No idea why. # "itemIds": list(map(lambda entity: (entity["pid"]), entities)), # } response = requests.post( - Config.config.search_api.scoring_server, + Config.config.search_api.search_scoring.api_url, json=data, - timeout=5, # Could this be a configuration parameter? + timeout=Config.config.search_api.search_scoring.api_request_timeout, ) response.raise_for_status() return response.json()["scores"]