]> git.openstreetmap.org Git - nominatim.git/blobdiff - sql/functions/normalization.sql
add testing for rank adaption while linking
[nominatim.git] / sql / functions / normalization.sql
index 53a81588e09e9f2f79c57c92b969cd165294f333..66d0214add4f7c1fe9a169bc2231120c94de22d1 100644 (file)
@@ -201,33 +201,16 @@ END;
 $$
 LANGUAGE plpgsql;
 
 $$
 LANGUAGE plpgsql;
 
-
-CREATE OR REPLACE FUNCTION get_word_id(lookup_word TEXT)
-  RETURNS INTEGER
-  AS $$
-DECLARE
-  lookup_token TEXT;
-  return_word_id INTEGER;
-BEGIN
-  lookup_token := trim(lookup_word);
-  SELECT min(word_id) FROM word
-    WHERE word_token = lookup_token and class is null and type is null
-    INTO return_word_id;
-  RETURN return_word_id;
-END;
-$$
-LANGUAGE plpgsql STABLE;
-
-
-CREATE OR REPLACE FUNCTION get_name_id(lookup_word TEXT)
-  RETURNS INTEGER
+-- Normalize a string and lookup its word ids (partial words).
+CREATE OR REPLACE FUNCTION addr_ids_from_name(lookup_word TEXT)
+  RETURNS INTEGER[]
   AS $$
 DECLARE
   lookup_token TEXT;
   AS $$
 DECLARE
   lookup_token TEXT;
-  return_word_id INTEGER;
+  return_word_id INTEGER[];
 BEGIN
 BEGIN
-  lookup_token := ' '||trim(lookup_word);
-  SELECT min(word_id) FROM word
+  lookup_token := make_standard_name(lookup_word);
+  SELECT array_agg(word_id) FROM word
     WHERE word_token = lookup_token and class is null and type is null
     INTO return_word_id;
   RETURN return_word_id;
     WHERE word_token = lookup_token and class is null and type is null
     INTO return_word_id;
   RETURN return_word_id;
@@ -236,21 +219,22 @@ $$
 LANGUAGE plpgsql STABLE;
 
 
 LANGUAGE plpgsql STABLE;
 
 
-CREATE OR REPLACE FUNCTION get_name_ids(lookup_word TEXT)
+-- Normalize a string and look up its name ids (full words).
+CREATE OR REPLACE FUNCTION word_ids_from_name(lookup_word TEXT)
   RETURNS INTEGER[]
   AS $$
 DECLARE
   lookup_token TEXT;
   return_word_ids INTEGER[];
 BEGIN
   RETURNS INTEGER[]
   AS $$
 DECLARE
   lookup_token TEXT;
   return_word_ids INTEGER[];
 BEGIN
-  lookup_token := ' '||trim(lookup_word);
+  lookup_token := ' '|| make_standard_name(lookup_word);
   SELECT array_agg(word_id) FROM word
     WHERE word_token = lookup_token and class is null and type is null
     INTO return_word_ids;
   RETURN return_word_ids;
 END;
 $$
   SELECT array_agg(word_id) FROM word
     WHERE word_token = lookup_token and class is null and type is null
     INTO return_word_ids;
   RETURN return_word_ids;
 END;
 $$
-LANGUAGE plpgsql STABLE;
+LANGUAGE plpgsql STABLE STRICT;
 
 
 CREATE OR REPLACE FUNCTION create_country(src HSTORE, country_code varchar(2))
 
 
 CREATE OR REPLACE FUNCTION create_country(src HSTORE, country_code varchar(2))