From 095894d11c42dd953b24b543f42eb41aca36608f Mon Sep 17 00:00:00 2001 From: Ben Halpern Date: Tue, 3 Oct 2023 09:51:57 +0700 Subject: [PATCH] Add language match as possible feed lever (#20211) --- app/models/articles/feeds.rb | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/models/articles/feeds.rb b/app/models/articles/feeds.rb index 89768605c..09d3f5a8b 100644 --- a/app/models/articles/feeds.rb +++ b/app/models/articles/feeds.rb @@ -355,6 +355,18 @@ module Articles user_required: false, select_fragment: "articles.score", group_by_fragment: "articles.score") + relevancy_lever(:language_match, + label: "Weight to give based on whether the language matches any of the user's languages", + range: "[0..1]", # 0 for no match, 1 for match + user_required: true, + select_fragment: "CASE + WHEN COUNT(user_languages.language) = 0 THEN 0 + WHEN articles.language = ANY(array_agg(user_languages.language)) THEN 1 + ELSE 0 + END", + joins_fragments: ["LEFT OUTER JOIN user_languages + ON user_languages.user_id = :user_id"], + group_by_fragment: "articles.language") end private_constant :LEVER_CATALOG # rubocop:enable Metrics/BlockLength