+-- 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.
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;