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