+-- 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[],
+ rankings TEXT,
+ def_weight FLOAT)
+ RETURNS FLOAT
+ AS $$
+DECLARE
+ rank JSON;
+BEGIN
+ FOR rank IN
+ SELECT * FROM json_array_elements(rankings::JSON)
+ LOOP
+ IF true = ALL(SELECT x::int = ANY(search_vector) FROM json_array_elements_text(rank->1) as x) THEN
+ RETURN (rank->>0)::float;
+ END IF;
+ END LOOP;
+ RETURN def_weight;
+END;
+$$
+LANGUAGE plpgsql IMMUTABLE;