- FOR r IN
- SELECT place_id, name_vector, address_rank, search_rank,
- ST_Distance(centroid, point) as distance, null as isguess
- FROM search_name_-partition-
- WHERE name_vector @> ARRAY[isin_token]
- AND search_rank < maxrank
- UNION ALL
- SELECT place_id, name_vector, address_rank, search_rank,
- ST_Distance(centroid, point) as distance, null as isguess
- FROM search_name_country
- WHERE name_vector @> ARRAY[isin_token]
- AND search_rank < maxrank
- ORDER BY distance ASC limit 1
- LOOP
- RETURN NEXT r;
- END LOOP;
- RETURN;
- END IF;
--- end
-
- RAISE EXCEPTION 'Unknown partition %', in_partition;
-END
-$$
-LANGUAGE plpgsql;
-
-create or replace function getNearestNamedRoadFeature(in_partition INTEGER, point GEOMETRY, isin_token INTEGER[])
- RETURNS setof nearfeature AS $$
-DECLARE
- r nearfeature%rowtype;
-BEGIN
-
--- start
- IF in_partition = -partition- THEN
- FOR r IN
- SELECT place_id, name_vector, address_rank, search_rank,
- ST_Distance(centroid, point) as distance, null as isguess
- FROM search_name_-partition-
- WHERE name_vector @> isin_token
- AND ST_DWithin(centroid, point, 0.01)
- AND search_rank between 26 and 27
- ORDER BY distance ASC limit 1
- LOOP
- RETURN NEXT r;
- END LOOP;
- RETURN;
+ SELECT place_id FROM search_name_-partition-
+ INTO parent
+ WHERE name_vector && isin_token
+ AND centroid && ST_Expand(point, 0.015)
+ AND search_rank between 26 and 27
+ ORDER BY ST_Distance(centroid, point) ASC limit 1;
+ RETURN parent;