]> git.openstreetmap.org Git - nominatim.git/blobdiff - lib-sql/functions/ranking.sql
Merge pull request #3260 from lonvia/improve-catgeory-search
[nominatim.git] / lib-sql / functions / ranking.sql
index 1f2362114c322077a281f4d59f029181341e3913..0b18954cedb985ab71430b20762958f7571dd6da 100644 (file)
@@ -1,3 +1,10 @@
+-- SPDX-License-Identifier: GPL-2.0-only
+--
+-- This file is part of Nominatim. (https://nominatim.org)
+--
+-- Copyright (C) 2022 by the Nominatim developer community.
+-- For a full list of authors see the git log.
+
 -- Functions related to search and address ranks
 
 -- Return an approximate search radius according to the search rank.
 -- Functions related to search and address ranks
 
 -- Return an approximate search radius according to the search rank.
@@ -277,3 +284,26 @@ BEGIN
 END;
 $$
 LANGUAGE plpgsql IMMUTABLE;
 END;
 $$
 LANGUAGE plpgsql IMMUTABLE;
+
+
+CREATE OR REPLACE FUNCTION weigh_search(search_vector INT[],
+                                        term_vectors TEXT[],
+                                        weight_vectors FLOAT[],
+                                        def_weight FLOAT)
+  RETURNS FLOAT
+  AS $$
+DECLARE
+  pos INT := 1;
+  terms TEXT;
+BEGIN
+  FOREACH terms IN ARRAY term_vectors
+  LOOP
+    IF search_vector @> terms::INTEGER[] THEN
+      RETURN weight_vectors[pos];
+    END IF;
+    pos := pos + 1;
+  END LOOP;
+  RETURN def_weight;
+END;
+$$
+LANGUAGE plpgsql IMMUTABLE;