From 0582dbe472d9d4e26391fb7bb2d1d42e5eba4615 Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Fri, 2 Mar 2018 00:00:14 +0100 Subject: [PATCH] Better search ranking --- database/Database.php | 4 ++-- database/backends/PostgresSmartBackend.php | 20 ++++++++++---------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/database/Database.php b/database/Database.php index 4305f4c..c067a12 100644 --- a/database/Database.php +++ b/database/Database.php @@ -67,7 +67,7 @@ class Database private function apply_config(\PDOStatement $stmt) { - $stmt->bindValue(':config_normalization', 32, PDO::PARAM_INT); + $stmt->bindValue(':config_normalization', 4, PDO::PARAM_INT); $stmt->bindValue(':weight_content', 14, PDO::PARAM_INT); $stmt->bindValue(':weight_type', 16, PDO::PARAM_INT); @@ -262,4 +262,4 @@ class Database $stmt->execute(); return $stmt->fetchAll(\PDO::FETCH_ASSOC); } -} \ No newline at end of file +} diff --git a/database/backends/PostgresSmartBackend.php b/database/backends/PostgresSmartBackend.php index 5e2ce1f..b47376e 100644 --- a/database/backends/PostgresSmartBackend.php +++ b/database/backends/PostgresSmartBackend.php @@ -68,13 +68,13 @@ class PostgresSmartBackend implements Backend backlog.message, query, ( - (ts_rank(tsv, query, :config_normalization) ^ :weight_content) * + (ts_rank_cd(tsv, query, :config_normalization) ^ :weight_content) * ((CASE WHEN TYPE IN (1, 4) THEN 1.0 - WHEN TYPE IN (2, 1024, 2048, 4096, 16384) THEN 0.75 - WHEN TYPE IN (32, 64, 128, 256, 512, 32768, 65536) THEN 0.5 - WHEN TYPE IN (8, 16, 8192, 131072) THEN 0.25 - ELSE 0.1 END) ^ :weight_type) * + WHEN TYPE IN (2, 1024, 2048, 4096, 16384) THEN 0.8 + WHEN TYPE IN (32, 64, 128, 256, 512, 32768, 65536) THEN 0.6 + WHEN TYPE IN (8, 16, 8192, 131072) THEN 0.4 + ELSE 0.2 END) ^ :weight_type) * ((1 / (EXTRACT(EPOCH FROM CURRENT_TIMESTAMP) - EXTRACT(EPOCH FROM TIME))) ^ :weight_time) ) AS rank_value FROM @@ -142,13 +142,13 @@ class PostgresSmartBackend implements Backend backlog.message, query, ( - (ts_rank(tsv, query, :config_normalization) ^ :weight_content) * + (ts_rank_cd(tsv, query, :config_normalization) ^ :weight_content) * ((CASE WHEN TYPE IN (1, 4) THEN 1.0 - WHEN TYPE IN (2, 1024, 2048, 4096, 16384) THEN 0.75 - WHEN TYPE IN (32, 64, 128, 256, 512, 32768, 65536) THEN 0.5 - WHEN TYPE IN (8, 16, 8192, 131072) THEN 0.25 - ELSE 0.1 END) ^ :weight_type) * + WHEN TYPE IN (2, 1024, 2048, 4096, 16384) THEN 0.8 + WHEN TYPE IN (32, 64, 128, 256, 512, 32768, 65536) THEN 0.6 + WHEN TYPE IN (8, 16, 8192, 131072) THEN 0.4 + ELSE 0.2 END) ^ :weight_type) * ((1 / (EXTRACT(EPOCH FROM CURRENT_TIMESTAMP) - EXTRACT(EPOCH FROM TIME))) ^ :weight_time) ) AS rank_value FROM -- GitLab