diff --git a/app/services/discovery_engine/best_bets_boost.rb b/app/services/discovery_engine/best_bets_boost.rb deleted file mode 100644 index e18b541..0000000 --- a/app/services/discovery_engine/best_bets_boost.rb +++ /dev/null @@ -1,14 +0,0 @@ -module DiscoveryEngine - module BestBetsBoost - def best_bets_boost_specs(query_string) - best_bets_for_query = Array(Rails.configuration.best_bets[query_string]) - return unless best_bets_for_query.any? - - condition_links = best_bets_for_query.map { "\"#{_1}\"" }.join(",") - [{ - boost: 1, - condition: "link: ANY(#{condition_links})", - }] - end - end -end diff --git a/app/services/discovery_engine/boosts/best_bets.rb b/app/services/discovery_engine/boosts/best_bets.rb new file mode 100644 index 0000000..f911e49 --- /dev/null +++ b/app/services/discovery_engine/boosts/best_bets.rb @@ -0,0 +1,28 @@ +module DiscoveryEngine::Boosts + class BestBets + def initialize(query_string) + @query_string = query_string + end + + def boost_specs + return unless best_bets_for_query.any? + + [{ + boost: 1, + condition: "link: ANY(#{condition_links})", + }] + end + + private + + attr_reader :query_string + + def best_bets_for_query + Array(Rails.configuration.best_bets[query_string]) + end + + def condition_links + best_bets_for_query.map { "\"#{_1}\"" }.join(",") + end + end +end diff --git a/app/services/discovery_engine/news_recency_boost.rb b/app/services/discovery_engine/boosts/news_recency.rb similarity index 90% rename from app/services/discovery_engine/news_recency_boost.rb rename to app/services/discovery_engine/boosts/news_recency.rb index f6a6030..c8722b8 100644 --- a/app/services/discovery_engine/news_recency_boost.rb +++ b/app/services/discovery_engine/boosts/news_recency.rb @@ -1,11 +1,11 @@ -module DiscoveryEngine - module NewsRecencyBoost +module DiscoveryEngine::Boosts + class NewsRecency FRESH_AGE = 1.week RECENT_AGE = 3.months OLD_AGE = 1.year ANCIENT_AGE = 4.years - def news_recency_boost_specs + def boost_specs [ { boost: 0.2, diff --git a/app/services/discovery_engine/search.rb b/app/services/discovery_engine/search.rb index e877fb8..138a72a 100644 --- a/app/services/discovery_engine/search.rb +++ b/app/services/discovery_engine/search.rb @@ -3,9 +3,6 @@ class Search DEFAULT_PAGE_SIZE = 10 DEFAULT_OFFSET = 0 - include BestBetsBoost - include NewsRecencyBoost - def initialize( query_params, client: ::Google::Cloud::DiscoveryEngine.search_service(version: :v1) @@ -53,8 +50,8 @@ def serving_config def boost_spec { condition_boost_specs: [ - *news_recency_boost_specs, - *best_bets_boost_specs(query), + *Boosts::NewsRecency.new.boost_specs, + *Boosts::BestBets.new(query).boost_specs, ], } end