Skip to content

Commit d4d5123

Browse files
author
Joseph Smith
committed
Both options in one branch
1 parent 220d620 commit d4d5123

7 files changed

Lines changed: 250 additions & 51 deletions

File tree

common-lib/src/main/scala/com/gu/mediaservice/lib/elasticsearch/ElasticSearchExecutions.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.gu.mediaservice.lib.elasticsearch
22

33
import com.gu.mediaservice.lib.logging._
4+
import com.sksamuel.elastic4s.ElasticDsl.RichRequest
45
import com.sksamuel.elastic4s._
6+
57
import scala.concurrent.{ExecutionContext, Future}
68
import scala.util.{Failure, Success}
79

kahuna/public/js/search/query.html

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,15 @@
77
Use AI search
88
</label>
99
</span>
10-
<span id="fill-scores-checkbox" class="search__modifier-item search__modifier-checkbox"
10+
<span id="fill-scores-select" class="search__modifier-item"
1111
ng-if="searchQuery.shouldDisplayAISearchOption && searchQuery.useAISearch">
1212
<label>
13-
<input type="checkbox"
14-
ng-model="searchQuery.fillScores"/>
15-
Fill scores
13+
Fill scores:
14+
<select ng-model="searchQuery.fillScoresMode">
15+
<option value="off">Off (default hybrid)</option>
16+
<option value="option1">Option 1</option>
17+
<option value="option2">Option 2</option>
18+
</select>
1619
</label>
1720
</span>
1821
<span class="search-query">

kahuna/public/js/search/query.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -83,11 +83,11 @@ query.controller('SearchQueryCtrl', [
8383
if (!ctrl.shouldDisplayAISearchOption) {
8484
ctrl.useAISearch = false;
8585
ctrl.vecWeight = undefined;
86-
ctrl.fillScores = false;
86+
ctrl.fillScoresMode = 'off';
8787
} else {
8888
ctrl.useAISearch = ($stateParams.useAISearch === 'true' || $stateParams.useAISearch === true) ? true : false;
8989
ctrl.vecWeight = $stateParams.vecWeight;
90-
ctrl.fillScores = ($stateParams.fillScores === 'true' || $stateParams.fillScores === true) ? true : false;
90+
ctrl.fillScoresMode = $stateParams.fillScores || 'off';
9191
}
9292

9393
//--react - angular interop events--
@@ -461,22 +461,22 @@ query.controller('SearchQueryCtrl', [
461461
...ctrl.filter,
462462
useAISearch: true,
463463
vecWeight: ctrl.vecWeight,
464-
fillScores: ctrl.fillScores ? true : null
464+
fillScores: (ctrl.fillScoresMode && ctrl.fillScoresMode !== 'off') ? ctrl.fillScoresMode : null
465465
});
466466
} else {
467467
// fillScores is only meaningful with AI search, so clear it when AI search is disabled
468-
ctrl.fillScores = false;
468+
ctrl.fillScoresMode = 'off';
469469
$state.go('search.results', {...ctrl.filter, useAISearch: null, fillScores: null});
470470
}
471471
});
472-
$scope.$watch(() => ctrl.fillScores, () => {
472+
$scope.$watch(() => ctrl.fillScoresMode, () => {
473473
// fillScores only applies when AI search is enabled
474474
if (ctrl.useAISearch) {
475475
$state.go('search.results', {
476476
...ctrl.filter,
477477
useAISearch: true,
478478
vecWeight: ctrl.vecWeight,
479-
fillScores: ctrl.fillScores ? true : null
479+
fillScores: (ctrl.fillScoresMode && ctrl.fillScoresMode !== 'off') ? ctrl.fillScoresMode : null
480480
});
481481
}
482482
});

kahuna/public/js/services/api/media-api.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ mediaApi.factory('mediaApi',
6767
persisted,
6868
useAISearch: maybeStringToBoolean(useAISearch),
6969
vecWeight: vecWeight,
70-
fillScores: maybeStringToBoolean(fillScores)
70+
fillScores: fillScores
7171
}).get();
7272
}
7373

media-api/app/controllers/MediaApi.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -652,7 +652,7 @@ class MediaApi(
652652
}
653653

654654
val weight = params.vecWeight.getOrElse(1.0)
655-
val fillScores = params.fillScores.getOrElse(false)
655+
val fillScoresMode = params.fillScoresMode
656656

657657
// cache.get(key) is atomic: if two requests race on the same key, only one
658658
// load fires and both callers receive the same Future.
@@ -669,7 +669,7 @@ class MediaApi(
669669
k = k,
670670
numCandidates = Math.max(k * 2, 100),
671671
vecWeight = weight,
672-
fillScores = fillScores,
672+
fillScoresMode = fillScoresMode,
673673
filterOpt = filterOpt
674674
)
675675
} yield searchResults

0 commit comments

Comments
 (0)