Files
comaps/search/query_params.cpp
x7z4w 7bd0b414cd [search] Add more synonyms
Co-Authored-By: Matheus Gomes <matheus.gomes03@hotmail.com>
Co-Authored-By: Omar Hassan <omarhassan@noreply.codeberg.org>
Signed-off-by: x7z4w <x7z4w@noreply.codeberg.org>
2025-08-03 10:43:07 +01:00

1662 lines
54 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "search/query_params.hpp"
#include "search/ranking_utils.hpp"
#include "search/token_range.hpp"
#include <map>
#include <sstream>
namespace search
{
using namespace std;
namespace
{
// All synonyms should be lowercase.
/// @todo These should check the map language and use only the corresponding translation.
map<string, vector<string>> const kSynonyms = {
/// @todo Should process synonyms with errors like "blvrd" -> "blvd".
/// @see HouseOnStreetSynonymsWithMisprints test.
{"n", {"nowy", "nowa", "nossa", "norra", "número", "north", "nosso", "nacional", "nowe"}},
{"w", {"wald", "west", "weg"}},
{"s", {"santo", "senhora", "sant'", "santa", "south", "são", "san", "södra", "senhor", "see"}},
{"e", {"east"}},
{"nw", {"nowy", "nowa", "nowe", "northwest"}},
{"ne", {"northeast"}},
{"sw", {"southwest"}},
{"se", {"southeast"}},
/// @todo Should not duplicate Street synonyms defined in StreetsSynonymsHolder (avoid useless double queries).
/// Remove "street" and "avenue" here, but should update GetNameScore.
{"st", {"santo", "sant", "sint-", "saint", "stara", "street", "stary", "stora", "sankt", "store", "stare", "stig", "stigen"}},
{"dr", {"doktora", "doktorky", "doktor", "dokter", "doctor", "drive", "doutora", "doutor", "doktora"}},
{"ntra", {"nuestra"}},
{"sra", {"senhora", "senora", "señora"}},
{"sta", {"santa", "station"}},
{"al", {"alejach", "aleją", "alley", "alei", "alue", "aleja", "alameda", "alle", "aleea", "aleje", "allee"}},
{"ave", {"avenue"}},
{"blvd", {"boulevard", "bulevardul"}},
{"blvrd", {"boulevard"}},
{"cir", {"circle"}},
{"ct", {"court", "công trường"}},
{"hwy", {"highway"}},
{"pl", {"placu", "plaça", "platz", "plain", "placem", "planta", "plass", "place", "plaza", "plassen", "plains", "plats", "platsen", "plac"}},
{"rt", {"ranta", "retreat", "route"}},
{"sq", {"square", "superquadra"}},
{"ал", {"аллея", "алея"}},
{"бул", {"булевард", "бульвар"}},
{"зав", {"завулак"}},
{"кв", {"квартал"}},
{"наб", {"набережная", "набережна", "набярэжная"}},
{"пер", {"переулок"}},
{"пл", {"площа", "площадь", "площад"}},
{"пр", {"проезд", "проспект", "праспект", "провулок", "проїзд", "праезд"}},
{"туп", {"тупик", "тупік"}},
{"ш", {"шаша", "шосе", "шоссе"}},
{"cd", {"cadde", "caddesi"}},
{"св", {"святые", "святая", "святого", "святых", "свети", "свято", "святой"}},
{"б", {"большая", "большой"}},
{"бол", {"большая", "большой"}},
{"м", {"малый", "малая"}},
{"мал", {"малый", "малая"}},
{"нов", {"новый", "новая"}},
{"стар", {"старая", "старый"}},
{"বিডি", {"বাংলাদেশ"}},
{"আ/এ", {"আবাসিক এলাকা"}},
{"একনেক", {"জাতীয় অর্থনৈতিক পরিষদের নির্বাহী কমিটি"}},
{"সওজ", {"সড়ক ও জনপথ অধিদপ্তর"}},
{"পাউবো", {"পানি উন্নয়ন বোর্ড"}},
{"রাজউক", {"রাজধানী উন্নয়ন কর্তৃপক্ষ"}},
{"টেশিস", {"টেলিফোন শিল্প সংস্থা"}},
{"পবিস", {"পল্লী বিদ্যুৎ সমিতি"}},
{"ইউপি", {"ইউনিয়ন পরিষদ"}},
{"ঢাবি", {"ঢাকা বিশ্ববিদ্যালয়"}},
{"বাগ", {"বাগান"}},
{"", {"সড়ক"}},
{"সে", {"সেতু"}},
{"бл", {"блок"}},
{"вх", {"вход"}},
{"ген", {"генерал"}},
{"гр", {"град"}},
{"д-р", {"доктор"}},
{"доц", {"доцент"}},
{"кап", {"капитан"}},
{"мит", {"митрополит"}},
{"проф", {"професор"}},
{"ул", {"улица"}},
{"с", {"село"}},
{"ж.к", {"жилищен комплекс"}},
{"aparc", {"aparcament"}},
{"apmt", {"apartament"}},
{"apt", {"apartat", "apartment"}},
{"àt", {"àtic"}},
{"auto", {"autopista"}},
{"autop", {"autopista"}},
{"autov", {"autovía", "autovia"}},
{"av", {"avinguda", "avenida", "avenue"}},
{"avd", {"avinguda", "avenida"}},
{"avda", {"avinguda", "avenida"}},
{"bda", {"banda", "baixada"}},
{"bxs", {"baixos"}},
{"bnc", {"barranc"}},
{"b", {"berg", "barri", "bach", "barriada", "banda", "bairro", "bad"}},
{"bibl", {"biblioteca"}},
{"bl", {"bulvar", "bulvarı", "bowl", "bloc", "bloco"}},
{"c", {"cesta", "carrer", "calle", "centre"}},
{"c/", {"carrer", "calle"}},
{"cró", {"carreró"}},
{"ctra", {"carretera"}},
{"cant", {"cantón", "cantonada"}},
{"cem", {"cementiri"}},
{"cint", {"cinturón", "cinturó"}},
{"cp", {"codi postal", "col·legi públic"}},
{"col·l", {"col·legi"}},
{"com", {"comissaria"}},
{"convt", {"convent"}},
{"corr", {"correus"}},
{"distr", {"districte"}},
{"drec", {"drecera"}},
{"dta", {"dreta"}},
{"entr", {"entrada"}},
{"entl", {"entresòl"}},
{"esc", {"escalier", "escadas", "escala", "escaliers", "escola"}},
{"eu", {"escola universitària"}},
{"esgl", {"església"}},
{"est", {"estate", "estació"}},
{"estac", {"estacionament"}},
{"fac", {"facultat"}},
{"fca", {"fábrica", "finca"}},
{"hab", {"habitação", "habitació"}},
{"hosp", {"hospital"}},
{"h", {"höhle", "hohes", "hotel", "hohe", "hoher"}},
{"mtir", {"monestir"}},
{"mon", {"monument"}},
{"mn", {"mossèn"}},
{"mpal", {"municipal"}},
{"mus", {"museum", "museu", "musée"}},
{"nac", {"nacional"}},
{"nre", {"nombre"}},
{"núm", {"número"}},
{"s/n", {"sense número", "sem número"}},
{"par", {"parada"}},
{"parc", {"parc", "parcel·la", "parcs"}},
{"pdís", {"passadís"}},
{"ptge", {"passatge"}},
{"pg", {"pengiran", "passeig"}},
{"pav", {"pavillons", "pavillon", "pavilhão", "pavelló"}},
{"pça", {"plaça"}},
{"pobl", {"població"}},
{"pol", {"polígon"}},
{"pi", {"polígon industrial"}},
{"pol. ind", {"polígon industrial"}},
{"pta", {"porta", "petite allée", "piața", "petites allées", "puerta"}},
{"ptal", {"portal"}},
{"pral", {"principal"}},
{"pda", {"pujada"}},
{"pk", {"pike", "park", "punt quilomètric"}},
{"rbla", {"rambla"}},
{"rda", {"ronda"}},
{"sgda", {"sagrada"}},
{"sgt", {"sagrat", "sergeant"}},
{"s/àt", {"sobreàtic"}},
{"trav", {"travessa", "travessera", "travessia"}},
{"trv", {"travessa", "travessia"}},
{"urb", {"urbanização", "urbanització", "urbanización"}},
{"sort", {"sortida"}},
{"v", {"västra", "vei", "von", "velike", "veliko", "väg", "via", "quinta", "velikem", "veliki", "vegen", "veien", "veg", "vägen", "quinto", "velika", "van"}},
{"ul", {"ulicą", "ulicy", "ulica", "ulice"}},
{"", {"třída"}},
{"nám", {"námestie", "náměstí"}},
{"ll", {"lille"}},
{"ndr", {"nordre"}},
{"nr", {"nørre", "nummer"}},
{"sdr", {"søndre", "sønder"}},
{"gl", {"glade", "gammel,gamle"}},
{"a", {"am", "auto-estrada"}},
{"a.d", {"auf der", "an der"}},
{"akh", {"allgemeines krankenhaus"}},
{"asz", {"altstoffsammelzentrum"}},
{"bhf", {"bahnhof"}},
{"bayer", {"bayerische", "bayerisch", "bayerischer", "bayerisches"}},
{"bg", {"bundesgymnasium", "burg", "berg"}},
{"bez", {"bezirk"}},
{"br", {"bridge", "brücke", "broeder", "brae", "bairro", "brace"}},
{"bpd", {"bundespolizeidirektion"}},
{"brg", {"brigadeiro", "bourg", "bundesrealgymnasium"}},
{"bgld", {"burgenländische", "burgenländisches", "burgenländischer"}},
{"bgm", {"bürgermeister"}},
{"ch", {"church", "chaussee", "chemin", "chairman", "chase"}},
{"dt", {"deutsches", "deutsch", "deutscher", "deutsche"}},
{"dav", {"deutscher alpenverein"}},
{"dkm", {"denkmal"}},
{"df", {"dorf"}},
{"ehem", {"ehemalige", "ehemaliger", "ehemaliges"}},
{"fb", {"fabrik"}},
{"fh", {"fachhochschule", "forsthaus"}},
{"ff", {"freiwillige feuerwehr"}},
{"g", {"gata", "gasse", "großes", "großer", "gatan", "große", "gaten", "gate"}},
{"gh", {"gasthaus"}},
{"ghf", {"gasthof"}},
{"gde", {"gemeinde"}},
{"gr", {"grande rue", "grandes rues", "gracht", "grandrue", "gränd", "graben", "grovet", "gränden", "grove"}},
{"gr", {"großes", "große", "großer"}},
{"grg", {"gymnasium und realgymnasium"}},
{"hak", {"handelsakademie"}},
{"hasch", {"handelsschule"}},
{"hst", {"haltestelle"}},
{"hbf", {"hauptbahnhof"}},
{"hs", {"haus", "high school"}},
{"hl", {"heiliger", "heiliges", "heilige", "hill", "hills"}},
{"ht", {"hinteres", "hinterer", "hinter…", "hintere"}},
{"hint", {"hinteres", "hinterer", "hinter…", "hintere"}},
{"htl", {"höhere technische lehranstalt"}},
{"htt", {"hütte"}},
{"i", {"prima", "pierwszy", "pierwsza", "in", "island", "pierwsze", "primo", "im"}},
{"i.d", {"in der"}},
{"ing", {"inžiniera/inžinierky", "ingenieur"}},
{"int", {"interior", "internationaler", "intrarea", "internationales", "internationale"}},
{"jh", {"jagdhaus"}},
{"jhtt", {"jagdhütte"}},
{"kap", {"kapelle"}},
{"kpl", {"kapelle"}},
{"kg", {"katastralgemeinde", "…kogel", "kampong", "kogel"}},
{"ka", {"kereta api", "kläranlage"}},
{"kl", {"konzentrationslager", "klein…", "kleines", "kleiner", "kleine", "kylä"}},
{"kga", {"kleingartenanlage"}},
{"kgv", {"kleingartenverein"}},
{"kz", {"kreuz", "konzentrationslager"}},
{"kh", {"krankenhaus"}},
{"lkh", {"landeskrankenhaus"}},
{"ma", {"maria", "magistratsabteilung"}},
{"mag", {"magister"}},
{"mkt", {"markt", "market"}},
{"mva", {"müllverbrennungsanlage"}},
{"np", {"nationalpark", "national park"}},
{"nsg", {"naturschutzgebiet"}},
{"nms", {"neue mittelschule"}},
{"nd", {"niedere", "niederes", "niederer"}},
{"", {"niederösterreichischer", "niederösterreichisches", "niederösterreich", "niederösterreichische"}},
{"nördl", {"nördlicher", "nördliche", "nördliches"}},
{"o", {"ob"}},
{"ob", {"oberer", "obere", "oberes"}},
{"", {"oberösterreichisches", "oberösterreich", "oberösterreichische", "oberösterreichischer"}},
{"obj", {"objekt"}},
{"öst", {"österreichisches", "österreichische", "österreichischer"}},
{"österr", {"österreichisches", "österreichische", "österreichischer"}},
{"öav", {"österreichischer alpenverein"}},
{"ögv", {"österreichischer gebirgsverein"}},
{"ötk", {"österreichischer touristenklub"}},
{"östl", {"östlicher", "östliche", "östliches"}},
{"p", {"pfad", "polku", "phường", "pater"}},
{"prof", {"professora", "professor", "profesora/profesorky", "profesora (profesor)"}},
{"q", {"quelle"}},
{"qu", {"quelle", "quai"}},
{"res", {"reservation", "reserve", "reservoir", "résidence", "résidences"}},
{"rh", {"rhein", "rạp hát"}},
{"rww", {"rundwanderweg"}},
{"r", {"river", "ruine", "regional", "rio", "rue", "rua", "raitti", "rues"}},
{"sg", {"schottergrube", "sungai", "sandgrube"}},
{"sbg", {"salzburger", "salzburg"}},
{"schl", {"schloss"}},
{"sdlg", {"siedlung"}},
{"smz", {"sozialmedizinisches zentrum"}},
{"sp", {"strada provinciale", "szkoła podstawowa", "splaiul", "spodnja", "spodnji", "spitze", "spodnje"}},
{"stb", {"steinbruch"}},
{"stg", {"stiege"}},
{"str", {"strasse", "stary", "stara", "strada", "straat", "stare", "straße"}},
{"südl", {"südliche", "südlicher", "südliches"}},
{"u", {"unteres", "unterer", "untere", "utca"}},
{"unt", {"unteres", "unterer", "untere"}},
{"t", {"tie", "teich"}},
{"tu", {"technische universität"}},
{"tüpl", {"truppenübungsplatz"}},
{"ukh", {"unfallkrankenhaus"}},
{"uni", {"universität", "university"}},
{"verf", {"verfallen"}},
{"vd", {"vorderer", "vorderes", "vordere"}},
{"vord", {"vorderer", "vorderes", "vordere"}},
{"v.d", {"von der", "vor der"}},
{"vs", {"volksschule"}},
{"wsf", {"wasserfall"}},
{"wssf", {"wasserfall"}},
{"westl", {"westliche", "westliches", "westlicher"}},
{"wr", {"wiener"}},
{"ws", {"wiese"}},
{"wu", {"wirtschaftsuniversität"}},
{"wh", {"wirtshaus"}},
{"z", {"zum"}},
{"mnt", {"muntele", "maantee"}},
{"pst", {"puiestee"}},
{"rdt", {"raudtee"}},
{"rdtj", {"raudteejaam"}},
{"tn", {"tarn", "tänav", "turn"}},
{"αγ", {"αγίας", "αγίων", "αγίου"}},
{"αφοί", {"αδελφοί"}},
{"αφών", {"αδελφών"}},
{"αλ", {"αλέξανδρου"}},
{"ατει", {"ανώτατο τεχνολογικό εκπαιδευτικό ίδρυμα"}},
{"ατ", {"αστυνομικό τμήμα"}},
{"β", {"βασιλέως", "βασιλίσσης"}},
{"βασ", {"βασιλέως", "βασιλίσσης"}},
{"γρ", {"γρηγορίου"}},
{"δ", {"δήμος"}},
{"δς", {"δημοτικό σχολείο"}},
{"δημ. σχ", {"δημοτικό σχολείο"}},
{"εθν", {"εθνάρχου", "εθνική", "εθνικής"}},
{"ελ", {"ελευθέριος", "ελευθερίου"}},
{"ελτα", {"ταχυδρομείο", "ελληνικά ταχυδρομεία"}},
{"θεσ/νίκης", {"θεσσαλονίκης"}},
{"ι", {"ιερά μονή"}},
{"ι.ν", {"ιερός ναός"}},
{"κτ", {"κτίριο"}},
{"κων/νου", {"κωνσταντίνου"}},
{"λ", {"λίμνη", "λεωφόρος"}},
{"λεωφ", {"λεωφόρος"}},
{"ν", {"νέο", "νέος", "νέα", "νέες", "νησί", "νέοι", "νομός"}},
{"όρ", {"όρος"}},
{"π", {"παλαιός", "παλαιό", "παλαιά", "παλαιοί", "παλαιές", "ποταμός"}},
{"αει", {"πανεπιστήμιο"}},
{"παν", {"πανεπιστήμιο"}},
{"πλ", {"πλατεία"}},
{"ποτ", {"ποταμός"}},
{"στρ", {"στρατηγού"}},
{"τει", {"τεχνολογικό εκπαιδευτικό ίδρυμα"}},
{"etorb", {"etorbidea"}},
{"err", {"errepidea"}},
{"k", {"kalea", "katu", "koło", "kolo", "kort(e)"}},
{"accs", {"access"}},
{"afb", {"air force base"}},
{"angb", {"air national guard base"}},
{"aprt", {"airport"}},
{"all", {"alley", "allées", "allée"}},
{"ally", {"alley"}},
{"aly", {"alley"}},
{"alwy", {"alleyway"}},
{"ambl", {"amble"}},
{"apts", {"apartments"}},
{"apch", {"approach"}},
{"app", {"approach"}},
{"arc", {"arcade", "arcades"}},
{"artl", {"arterial"}},
{"arty", {"artery"}},
{"bk", {"back"}},
{"ba", {"banan"}},
{"basn", {"basin"}},
{"bsn", {"basin"}},
{"bch", {"bas chemin", "beach"}},
{"bend", {"bend"}},
{"bnd", {"bend"}},
{"blk", {"block"}},
{"bwlk", {"boardwalk"}},
{"bvd", {"boulevard"}},
{"bdy", {"boundary"}},
{"brae", {"brae"}},
{"brk", {"break", "brook"}},
{"bdge", {"bridge"}},
{"brdg", {"bridge"}},
{"bri", {"bridge"}},
{"bdwy", {"broadway"}},
{"bway", {"broadway"}},
{"bwy", {"broadway"}},
{"brw", {"brow"}},
{"brow", {"brow"}},
{"bldgs", {"buildings"}},
{"bldngs", {"buildings"}},
{"bus", {"business"}},
{"bps", {"bypass"}},
{"byp", {"bypass"}},
{"bypa", {"bypass"}},
{"bywy", {"byway"}},
{"cvn", {"caravan"}},
{"caus", {"causeway"}},
{"cswy", {"causeway"}},
{"cway", {"causeway"}},
{"cen", {"center", "centre"}},
{"ctr", {"center", "contour", "centre"}},
{"ctrl", {"central"}},
{"cnwy", {"centreway"}},
{"cct", {"circuit"}},
{"ci", {"circuit"}},
{"crc", {"circus"}},
{"crcs", {"circus"}},
{"cty", {"city", "công ty"}},
{"cl", {"close", "calle"}},
{"cmn", {"common"}},
{"comm", {"common", "community", "commission"}},
{"cnc", {"concourse"}},
{"con", {"concourse"}},
{"cps", {"copse"}},
{"cnr", {"corner"}},
{"crn", {"corner"}},
{"cso", {"corso"}},
{"cotts", {"cottages"}},
{"co", {"county"}},
{"cr", {"creek", "crescent", "county route", "county road"}},
{"crt", {"court"}},
{"cyd", {"courtyard"}},
{"ctyd", {"courtyard"}},
{"ce", {"cove"}},
{"cov", {"cove"}},
{"cove", {"cove"}},
{"cv", {"công viên", "cove", "cave"}},
{"ck", {"creek"}},
{"crk", {"creek"}},
{"cres", {"crescent"}},
{"crst", {"crest"}},
{"cst", {"castel", "crest"}},
{"cft", {"croft"}},
{"cs", {"cross"}},
{"crss", {"cross"}},
{"crsg", {"crossing"}},
{"csg", {"crossing"}},
{"xing", {"crossing"}},
{"crd", {"crossroad"}},
{"cowy", {"crossway"}},
{"cds", {"cul-de-sac"}},
{"csac", {"cul-de-sac"}},
{"cve", {"curve"}},
{"cutt", {"cutting"}},
{"dle", {"dale"}},
{"dale", {"dale"}},
{"devn", {"deviation"}},
{"dip", {"dip"}},
{"dstr", {"distributor"}},
{"dn", {"down", "downs"}},
{"drv", {"drive"}},
{"dv", {"drive"}},
{"drwy", {"driveway"}},
{"dvwy", {"driveway"}},
{"dwy", {"driveway"}},
{"edg", {"edge"}},
{"edge", {"edge"}},
{"elb", {"elbow"}},
{"end", {"end"}},
{"ent", {"entrance"}},
{"esp", {"esplanade", "esplanades"}},
{"exp", {"expressway"}},
{"expy", {"expressway"}},
{"expwy", {"expressway"}},
{"xway", {"expressway"}},
{"ex", {"extension"}},
{"fawy", {"fairway"}},
{"fy", {"fairway", "ferry"}},
{"fr", {"father", "frontage", "frei"}},
{"fd", {"field"}},
{"ftrk", {"fire track"}},
{"fit", {"firetrail"}},
{"fl", {"flat"}},
{"flat", {"flat"}},
{"folw", {"follow"}},
{"ftwy", {"footway"}},
{"fshr", {"foreshore"}},
{"fsr", {"forest service road"}},
{"form", {"forum", "formation"}},
{"ft", {"fort", "frente"}},
{"frwy", {"freeway"}},
{"fwy", {"freeway"}},
{"frnt", {"front"}},
{"frtg", {"frontage"}},
{"gap", {"gap"}},
{"gdn", {"gardens", "garden"}},
{"gdns", {"gardens"}},
{"ga", {"gates", "gate"}},
{"gte", {"gates", "gate"}},
{"gwy", {"gateway"}},
{"geo", {"george"}},
{"gld", {"glade"}},
{"glde", {"glade"}},
{"gln", {"glen"}},
{"glen", {"glen"}},
{"gra", {"grange"}},
{"gn", {"green", "gunung"}},
{"grn", {"górny", "green", "górna", "górne"}},
{"grnd", {"ground"}},
{"gro", {"grove"}},
{"gly", {"gully"}},
{"hbr", {"harbor", "harbour"}},
{"hvn", {"haven"}},
{"hd", {"head", "heads"}},
{"hgts", {"heights"}},
{"ht", {"heights"}},
{"hts", {"heights"}},
{"hird", {"highroad"}},
{"hrd", {"highroad"}},
{"hill", {"hill"}},
{"hls", {"hills"}},
{"ho", {"house"}},
{"hse", {"house"}},
{"ind", {"industrial"}},
{"intg", {"interchange"}},
{"intl", {"international"}},
{"is", {"island"}},
{"jctn", {"junction"}},
{"jnc", {"junction"}},
{"jr", {"júnior", "junior"}},
{"key", {"key"}},
{"lgn", {"lagoon"}},
{"l", {"lange", "lakes", "lilla"}},
{"ldg", {"landing", "lodge"}},
{"la", {"lane"}},
{"lane", {"lane"}},
{"ln", {"line", "laan", "lane"}},
{"lnwy", {"laneway"}},
{"line", {"line"}},
{"link", {"link"}},
{"lk", {"link"}},
{"lit", {"little"}},
{"lt", {"lote", "lieutenant", "little"}},
{"lkt", {"lookout"}},
{"loop", {"loop"}},
{"lp", {"loop"}},
{"low", {"lower"}},
{"lr", {"lower"}},
{"lwr", {"lower"}},
{"mall", {"mall"}},
{"ml", {"mała", "mały", "mall", "małe"}},
{"mnr", {"manor"}},
{"mans", {"mansions"}},
{"mdw", {"meadow", "meadows"}},
{"mdws", {"meadows"}},
{"md", {"mead"}},
{"mdr", {"meander"}},
{"mndr", {"meander"}},
{"mr", {"meester", "meander"}},
{"med", {"medical"}},
{"mem", {"memorial"}},
{"mews", {"mews"}},
{"mw", {"mews"}},
{"mid", {"middle"}},
{"ms", {"middle school"}},
{"mi", {"mile"}},
{"mil", {"military"}},
{"mtwy", {"motorway"}},
{"mwy", {"motorway"}},
{"mt", {"mount", "mont", "muntele"}},
{"mtn", {"mountain", "mountains"}},
{"mun", {"municipal"}},
{"nra", {"national recreation area"}},
{"nwra", {"national wildlife refuge area"}},
{"nk", {"nook"}},
{"nook", {"nook"}},
{"out", {"outlook"}},
{"otlk", {"outlook"}},
{"pde", {"parade"}},
{"pdse", {"paradise"}},
{"park", {"park"}},
{"pkld", {"parklands"}},
{"pkwy", {"parkway"}},
{"pky", {"parkway"}},
{"pwy", {"pathway", "parkway"}},
{"pass", {"passage", "passes", "passe", "pass"}},
{"ps", {"pass", "puisto"}},
{"psge", {"passage"}},
{"path", {"path"}},
{"phwy", {"pathway"}},
{"pway", {"pathway"}},
{"piaz", {"piazza"}},
{"plat", {"plateau"}},
{"plz", {"plaza"}},
{"plza", {"plaza"}},
{"pkt", {"pocket"}},
{"pnt", {"pointe", "point"}},
{"pt", {"port", "point", "phi trường"}},
{"port", {"port"}},
{"po", {"post office"}},
{"pct", {"precinct", "praceta"}},
{"prm", {"promenade"}},
{"prom", {"promenade"}},
{"quad", {"quad"}},
{"qdgl", {"quadrangle"}},
{"qdrt", {"quadrant"}},
{"qd", {"quadra", "quadrant"}},
{"qy", {"quay", "quays"}},
{"qys", {"quays"}},
{"ra", {"ramble"}},
{"rmbl", {"ramble"}},
{"rge", {"range"}},
{"rnge", {"range"}},
{"rch", {"reach"}},
{"rest", {"rest"}},
{"rst", {"rest"}},
{"rtt", {"retreat"}},
{"rtn", {"return"}},
{"rdg", {"ridge"}},
{"rdge", {"ridge"}},
{"rgwy", {"ridgeway"}},
{"rowy", {"right of way"}},
{"ri", {"rise"}},
{"rise", {"rise"}},
{"riv", {"river"}},
{"rvr", {"river"}},
{"rvwy", {"riverway"}},
{"rvra", {"riviera"}},
{"rd", {"road"}},
{"rds", {"roads"}},
{"rdsd", {"roadside"}},
{"rdwy", {"roadway"}},
{"rdy", {"roadway"}},
{"robt", {"robert"}},
{"rks", {"rocks"}},
{"rnde", {"ronde"}},
{"rsbl", {"rosebowl"}},
{"rty", {"rotary"}},
{"rnd", {"round"}},
{"rte", {"route", "routes"}},
{"row", {"row"}},
{"rue", {"rue"}},
{"run", {"run"}},
{"ss", {"simpang susun", "santi", "strada statale", "saints"}},
{"sr", {"srednje", "strada regionale", "senior", "srednja", "senhor", "srednji", "señor", "sister", "state route"}},
{"swy", {"serviceway"}},
{"svwy", {"serviceway"}},
{"shun", {"shunt"}},
{"sdng", {"siding"}},
{"slpe", {"slope"}},
{"snd", {"sound"}},
{"sth", {"south"}},
{"spur", {"spur"}},
{"strwy", {"stairway"}},
{"sh", {"state highway"}},
{"shwy", {"state highway"}},
{"stn", {"station"}},
{"sd", {"strand", "sekolah dasar"}},
{"stra", {"strand", "strada"}},
{"strp", {"strip"}},
{"sbwy", {"subway"}},
{"tarn", {"tarn"}},
{"term", {"terminal"}},
{"tce", {"terrace"}},
{"ter", {"terrace"}},
{"terr", {"terrace"}},
{"thfr", {"thoroughfare"}},
{"thor", {"thoroughfare"}},
{"tlwy", {"tollway"}},
{"twy", {"tollway"}},
{"top", {"top"}},
{"tor", {"tor"}},
{"twrs", {"towers"}},
{"twp", {"township"}},
{"trce", {"trace"}},
{"tr", {"track", "torre", "tori"}},
{"trk", {"track"}},
{"trl", {"trail"}},
{"trlr", {"trailer"}},
{"tri", {"triangle"}},
{"tkwy", {"trunkway"}},
{"tun", {"tunnel"}},
{"trn", {"turn", "terrain"}},
{"turn", {"turn"}},
{"tpk", {"turnpike"}},
{"tpke", {"turnpike"}},
{"upas", {"underpass"}},
{"ups", {"underpass"}},
{"univ", {"universidade", "university"}},
{"up", {"upper"}},
{"upr", {"upper"}},
{"va", {"vale"}},
{"vale", {"vale"}},
{"vy", {"valley"}},
{"vdct", {"viaduct"}},
{"via", {"via", "viaduct"}},
{"viad", {"viaduct"}},
{"vw", {"view"}},
{"view", {"view"}},
{"vill", {"village"}},
{"vlls", {"villas"}},
{"vst", {"vista"}},
{"vsta", {"vista"}},
{"walk", {"walk"}},
{"wk", {"walk"}},
{"wlk", {"wielki", "wielkie", "walk", "wielka"}},
{"wkwy", {"walkway"}},
{"wky", {"walkway"}},
{"wtr", {"waters"}},
{"way", {"way"}},
{"wy", {"way"}},
{"whrf", {"wharf"}},
{"wm", {"william"}},
{"wyn", {"wynd"}},
{"wynd", {"wynd"}},
{"yard", {"yard"}},
{"yd", {"yard"}},
{"circt", {"circuit"}},
{"conc", {"concession"}},
{"crnrs", {"corners"}},
{"cross", {"crossing"}},
{"divers", {"diversion"}},
{"espl", {"esplanade"}},
{"exten", {"extension"}},
{"grnds", {"grounds"}},
{"harbr", {"harbour"}},
{"hghlds", {"highlands"}},
{"landng", {"landing"}},
{"lmts", {"limits"}},
{"lkout", {"lookout"}},
{"orch", {"orchard"}},
{"ptway", {"pathway"}},
{"pvt", {"private"}},
{"rg", {"range"}},
{"subdiv", {"subdivision"}},
{"tline", {"townline"}},
{"trnabt", {"turnabout"}},
{"villge", {"village"}},
{"brgy", {"barangay"}},
{"bgy", {"barangay"}},
{"bo", {"barrio"}},
{"bro", {"brother"}},
{"bldg", {"building"}},
{"capt", {"capitan", "captain"}},
{"cpt", {"captain"}},
{"col", {"colonia", "col", "colonel"}},
{"cpd", {"compound"}},
{"cmpd", {"compound"}},
{"cong", {"congressman"}},
{"coop", {"cooperativa", "cooperative"}},
{"cpl", {"corporal"}},
{"dept", {"department", "departamento"}},
{"dep't", {"department"}},
{"dra", {"doctora", "doutora"}},
{"ext", {"extension"}},
{"gen", {"generaal", "generała", "generála", "general"}},
{"gov", {"governor"}},
{"hiway", {"highway"}},
{"hon", {"honorable"}},
{"kgg", {"kagalang-galang"}},
{"kag", {"kagawad"}},
{"kap", {"kapitan"}},
{"kapt", {"kapitan"}},
{"maj", {"major"}},
{"nat'l", {"national"}},
{"nhs", {"national high school"}},
{"ph", {"phường", "phase"}},
{"phil", {"philippines"}},
{"pcp", {"police community precinct"}},
{"pres", {"president"}},
{"prov", {"province"}},
{"provl", {"provincial"}},
{"prk", {"purok"}},
{"rep", {"representative"}},
{"sn", {"san", "sem número"}},
{"sto", {"santo"}},
{"sct", {"scout"}},
{"sen", {"sente", "senator", "sentiers", "sentier", "sentes"}},
{"shs", {"senior high school"}},
{"snr", {"señor"}},
{"so", {"sitio", "south"}},
{"subd", {"subdivision"}},
{"vda", {"viuda"}},
{"aceq", {"acequia"}},
{"alam", {"alameda"}},
{"alque", {"alquería"}},
{"andad", {"andador"}},
{"angta", {"angosta"}},
{"apto", {"apartamento"}},
{"aptos", {"apartamentos"}},
{"apdro", {"apeadero"}},
{"arb", {"arboleda"}},
{"arral", {"arrabal"}},
{"arry", {"arroyo"}},
{"a. vv", {"asociación de vecinos", "asociación de veciños"}},
{"a. v", {"asociación vecinal", "asociación veciñal"}},
{"balnr", {"balneario"}},
{"branc", {"barranco"}},
{"bqllo", {"barranquil"}},
{"barda", {"barriada"}},
{"b.º", {"barrio"}},
{"blq", {"bloque"}},
{"blvr", {"bulevar"}},
{"cllja", {"calleja"}},
{"callej", {"callejón"}},
{"cjón", {"callejón"}},
{"cllón", {"callejón"}},
{"cjla", {"callejuela"}},
{"cllzo", {"callizo"}},
{"czada", {"calzada"}},
{"cno", {"camino"}},
{"cmno", {"camino"}},
{"c. h", {"camino hondo"}},
{"c. n", {"camino nuevo"}},
{"c. v", {"camino viejo"}},
{"campg", {"camping"}},
{"cantr", {"cantera"}},
{"canti", {"cantina"}},
{"cra", {"colexio rural agrupado", "carrera", "colegio rural agrupado"}},
{"cro", {"carrero"}},
{"ctrin", {"carreterín"}},
{"crtil", {"carretil"}},
{"csrio", {"caserío"}},
{"cifp", {"centro integrado de formación profesional"}},
{"ccvcn", {"circunvalación"}},
{"cbtiz", {"cobertizo"}},
{"cee", {"colexio de educación especial", "colegio de educación especial"}},
{"cei", {"colegio de educación infantil", "colexio de educación infantil"}},
{"ceip", {"colexio de educación infantil e primaria", "colegio de educación infantil y primaria"}},
{"compj", {"complejo"}},
{"cjto", {"conjunto"}},
{"cnvto", {"convento"}},
{"crrlo", {"corralillo"}},
{"crrdo", {"corredor"}},
{"crtjo", {"cortijo"}},
{"cstan", {"costanilla"}},
{"coste", {"costera"}},
{"dhsa", {"dehesa"}},
{"demar", {"demarcación"}},
{"diag", {"diagonal"}},
{"disem", {"diseminado"}},
{"edif", {"edificio"}},
{"empr", {"empresa"}},
{"entd", {"entrada"}},
{"esca", {"escalera"}},
{"escal", {"escalinata"}},
{"eslda", {"espalda"}},
{"estcn", {"estación"}},
{"estda", {"estrada"}},
{"expla", {"explanada"}},
{"extrm", {"extramuros"}},
{"extrr", {"extrarradio"}},
{"fbrca", {"fábrica"}},
{"f. c", {"ferrocarril", "futebol clube"}},
{"ff. cc", {"ferrocarrís", "ferrocarriles"}},
{"gale", {"galería"}},
{"gta", {"glorieta"}},
{"g. v", {"gran vía"}},
{"hipód", {"hipódromo"}},
{"ies", {"instituto de educación secundaria"}},
{"jdín", {"jardín"}},
{"llnra", {"llanura"}},
{"malec", {"malecón"}},
{"mz", {"manzana"}},
{"merc", {"mercado"}},
{"mrdor", {"mirador"}},
{"mtrio", {"monasterio"}},
{"n.ª s.ª", {"nuestra señora"}},
{"ntr.ª sr.ª", {"nuestra señora"}},
{"ntra. sra", {"nuestra señora"}},
{"palac", {"palacio"}},
{"pant", {"pantano"}},
{"pque", {"parque"}},
{"parti", {"particular"}},
{"ptda", {"partida"}},
{"pzo", {"pasadizo"}},
{"psje", {"pasaje"}},
{"p.º", {"paseo"}},
{"p.º mar", {"paseo marítimo"}},
{"psllo", {"pasillo"}},
{"pza", {"plaza"}},
{"pzta", {"plazoleta"}},
{"plzla", {"plazuela"}},
{"pbdo", {"poblado"}},
{"políg", {"polígono"}},
{"pg. ind", {"polígono industrial"}},
{"prtco", {"pórtico"}},
{"ptilo", {"portillo"}},
{"przla", {"prazuela"}},
{"prol", {"prolongación"}},
{"pblo", {"pueblo"}},
{"pte", {"porte", "puente"}},
{"pto", {"puerto", "pátio"}},
{"p. k", {"punto kilométrico"}},
{"resid", {"residencial"}},
{"rbra", {"ribera"}},
{"rcón", {"rincón"}},
{"rcda", {"rinconada"}},
{"rtda", {"rotonda"}},
{"sanat", {"sanatorio"}},
{"stas", {"santas"}},
{"stos", {"santos"}},
{"santu", {"santuario"}},
{"sect", {"sector"}},
{"sedra", {"sendera"}},
{"send", {"sendero"}},
{"trrnt", {"torrente"}},
{"tráns", {"tránsito"}},
{"trval", {"transversal"}},
{"tras", {"trasera"}},
{"trva", {"travesía"}},
{"vecin", {"vecindario"}},
{"vcto", {"viaducto"}},
{"vvdas", {"viviendas"}},
{"abe", {"abbaye"}},
{"agl", {"agglomération"}},
{"aire", {"aire", "aires"}},
{"ach", {"ancien chemin"}},
{"art", {"anciennes routes", "ancienne route"}},
{"anse", {"anse"}},
{"aut", {"autoroute"}},
{"bre", {"barrières", "barrière"}},
{"bstd", {"bastide"}},
{"bast", {"baston"}},
{"begi", {"béguinage", "béguinages"}},
{"ber", {"berges", "berge"}},
{"bois", {"bois"}},
{"bcle", {"boucle"}},
{"bd", {"boulevard", "bulevardul"}},
{"but", {"butte"}},
{"cite", {"cités", "cité"}},
{"cote", {"côteau", "côte"}},
{"cale", {"cale"}},
{"camp", {"camp"}},
{"cgne", {"campagne"}},
{"cpg", {"camping"}},
{"cau", {"carreau"}},
{"car", {"carrefour", "carré"}},
{"care", {"carrières", "carrière"}},
{"carr", {"carré"}},
{"cav", {"cavée"}},
{"ctre", {"central", "centre"}},
{"chl", {"chalet"}},
{"chp", {"chapelle"}},
{"chi", {"charmille"}},
{"chs", {"chaussée", "chaussées"}},
{"che", {"chemins", "chemin"}},
{"chv", {"chemins vicinaux", "chemin vicinal"}},
{"chem", {"cheminements", "cheminement"}},
{"chez", {"chez"}},
{"cht", {"château"}},
{"cloi", {"cloître"}},
{"clos", {"clos"}},
{"coli", {"collines", "colline"}},
{"cor", {"corniches", "corniche", "coronel"}},
{"cott", {"cottage", "cottages"}},
{"cour", {"cour"}},
{"crs", {"cours"}},
{"dars", {"darse"}},
{"deg", {"degrés", "degré"}},
{"dsg", {"descentes", "descente"}},
{"dig", {"digues", "digue"}},
{"dom", {"domaine", "domaines"}},
{"ecl", {"écluses", "écluse"}},
{"écl", {"écluses", "écluse"}},
{"egl", {"église"}},
{"égl", {"église"}},
{"en", {"estrada nacional", "enceinte"}},
{"env", {"enclave"}},
{"enc", {"enclos"}},
{"espa", {"espace"}},
{"etang", {"étang"}},
{"étang", {"étang"}},
{"fg", {"faubourg"}},
{"frm", {"ferme", "fermes"}},
{"fon", {"fontaine"}},
{"fort", {"fort"}},
{"fos", {"fosses", "fosse"}},
{"foyr", {"foyer"}},
{"gal", {"galerie", "general", "galeries"}},
{"gare", {"gare"}},
{"garn", {"garenne"}},
{"gbd", {"grand boulevard"}},
{"gden", {"grands ensembles", "grand ensemble"}},
{"gri", {"grille"}},
{"grim", {"grimpette"}},
{"gpe", {"groupe", "groupes"}},
{"gpt", {"groupement"}},
{"hle", {"halle", "halles"}},
{"ham", {"hameau", "hameaux"}},
{"hch", {"haut chemin", "hauts chemins"}},
{"hip", {"hippodrome"}},
{"hlm", {"hlm"}},
{"ile", {"île"}},
{"île", {"île"}},
{"imm", {"immeubles", "immeuble"}},
{"imp", {"impasse", "impasses"}},
{"jard", {"jardins", "jardin"}},
{"jte", {"jetées", "jetée"}},
{"leve", {"levée"}},
{"ld", {"lieu-dit"}},
{"lot", {"lotissement", "lotissements"}},
{"mail", {"mail"}},
{"mf", {"maison forestière"}},
{"man", {"manoir"}},
{"mar", {"marche", "marches"}},
{"mal", {"marechal", "maréchal"}},
{"mas", {"mas"}},
{"mgr", {"monseigneur"}},
{"mte", {"montée", "montées"}},
{"mln", {"moulin", "moulins"}},
{"met", {"métro"}},
{"mét", {"métro"}},
{"nte", {"nouvelle route"}},
{"pal", {"palais"}},
{"pkg", {"parking"}},
{"p+r", {"parking relais", "parc relais"}},
{"prv", {"parvis"}},
{"pas", {"passage"}},
{"pn", {"passage à niveau"}},
{"ple", {"passerelle", "passerelles"}},
{"pat", {"patio"}},
{"pch", {"porche", "petit chemin"}},
{"pae", {"petite avenue"}},
{"pim", {"petite impasse"}},
{"prt", {"petite route"}},
{"ptr", {"petite rue"}},
{"plci", {"placis"}},
{"plag", {"plages", "plage"}},
{"pln", {"plaine", "plein"}},
{"plan", {"plan"}},
{"plt", {"plateau", "plateaux"}},
{"pont", {"ponts", "pont"}},
{"porq", {"portique", "portiques"}},
{"pot", {"poterne"}},
{"pour", {"pourtour"}},
{"prq", {"presquîle"}},
{"pre", {"pré"}},
{"pré", {"pré"}},
{"peri", {"périphérique"}},
{"psty", {"péristyle"}},
{"qua", {"quartier"}},
{"rac", {"raccourci"}},
{"raid", {"raidillon"}},
{"rpe", {"rampe"}},
{"rem", {"rempart"}},
{"roc", {"roc", "rocade"}},
{"rpt", {"rond point"}},
{"roqt", {"roquet"}},
{"rtd", {"rotonde"}},
{"rle", {"ruelle", "ruelles"}},
{"ste", {"sainte"}},
{"stde", {"stade"}},
{"tsse", {"terrasse", "terrasses"}},
{"tpl", {"terre plein"}},
{"trt", {"tertre", "tertres"}},
{"tour", {"tour"}},
{"tra", {"traverse"}},
{"val", {"vallée", "vallon"}},
{"ven", {"venelles", "venelle"}},
{"vte", {"vieille route"}},
{"vche", {"vieux chemin"}},
{"vla", {"villa", "villas"}},
{"vge", {"village", "villages"}},
{"voi", {"voie", "voies"}},
{"zone", {"zone"}},
{"za", {"zone artisanale"}},
{"zac", {"zone d'aménagement concerté"}},
{"zad", {"zone d'aménagement différé"}},
{"zi", {"zone industrielle"}},
{"zup", {"zone à urbaniser en priorité"}},
{"boul", {"boulevard"}},
{"carref", {"carrefour"}},
{"crois", {"croissant"}},
{"éch", {"échangeur"}},
{"rang", {"rang"}},
{"rdpt", {"rond-point"}},
{"sent", {"sentier"}},
{"r/", {"rúa"}},
{"gg", {"gang"}},
{"gi", {"gardu induk"}},
{"ir", {"insinyur", "ingenieur"}},
{"jl", {"jalan"}},
{"jend", {"jenderal"}},
{"kab", {"kabupaten"}},
{"kp", {"kampung"}},
{"kec", {"kecamatan"}},
{"kel", {"kelurahan"}},
{"no", {"சாலை", "salai", "nomor", "vazhi", "வழி"}},
{"rs", {"rumah sakit"}},
{"rsud", {"rumah sakit umum daerah"}},
{"sdn", {"sekolah dasar negeri"}},
{"sma", {"sekolah menengah atas"}},
{"sman", {"sekolah menengah atas negeri"}},
{"smk", {"sekolah menengah kejuruan"}},
{"smp", {"sekolah menengah pertama"}},
{"smpn", {"sekolah menengah pertama negeri"}},
{"tk", {"taman kanak-kanak"}},
{"c.le", {"calle"}},
{"c.po", {"campo"}},
{"c.na", {"cascina"}},
{"5", {"cinque"}},
{"c.so", {"corso"}},
{"c.te", {"corte"}},
{"x", {"decima", "decimo"}},
{"2", {"due", "drugi", "drugie", "druga"}},
{"f.ta", {"fondamenta"}},
{"l.go", {"largo"}},
{"loc", {"località"}},
{"l.mare", {"lungomare"}},
{"ix", {"nona", "nono"}},
{"9", {"nove"}},
{"8", {"otto"}},
{"viii", {"ottavo", "ottava"}},
{"p.za", {"piazza"}},
{"p.zza", {"piazza"}},
{"p.le", {"piazzale"}},
{"p.ta", {"porta", "piazzetta"}},
{"p.te", {"ponte"}},
{"1", {"pierwszy", "pierwsza", "un", "una", "pierwsze", "primo"}},
{"", {"primo"}},
{"iv", {"quattro", "quarta", "quarto"}},
{"4", {"quattro"}},
{"s.da", {"salizada"}},
{"ss.ma", {"santissima"}},
{"ss.me", {"santissime"}},
{"ss.mi", {"santissimi"}},
{"ss.mo", {"santissimo"}},
{"ii", {"seconda", "drugi", "druga", "secondo", "segundo", "drugie"}},
{"6", {"sei"}},
{"vi", {"sesta", "sesto"}},
{"7", {"sette"}},
{"vii", {"settima", "settimo"}},
{"staz", {"stazione"}},
{"sc", {"strada comunale", "sport clube"}},
{"iii", {"terza", "trzecie", "trzeci", "trzecia", "terzo"}},
{"3", {"trzecia", "trzecie", "tre", "trzeci"}},
{"xxx", {"trenta"}},
{"xx", {"venti"}},
{"20", {"venti"}},
{"xxv", {"venticinque"}},
{"25", {"venticinque"}},
{"xxiv", {"ventiquattro"}},
{"xxiii", {"ventitreesimo"}},
{"v.le", {"viale"}},
{"v.co", {"vico"}},
{"v.lo", {"vicolo"}},
{"ato", {"ambato"}},
{"any", {"ambinany"}},
{"adi", {"ambodi"}},
{"ahi", {"ambohi"}},
{"atr'", {"ambohitr'"}},
{"ani", {"ambony"}},
{"asi", {"ampasi"}},
{"aha", {"andoha"}},
{"ano", {"andrano"}},
{"jln", {"jalan"}},
{"spg", {"simpang"}},
{"hj", {"haji"}},
{"awg", {"awang"}},
{"dyg", {"dayang"}},
{"bt", {"bukit"}},
{"tg", {"tanjong"}},
{"lor", {"lorong"}},
{"", {"中学校"}},
{"", {"大学"}},
{"", {"独立行政法人"}},
{"", {"学校法人"}},
{"", {"銀行"}},
{"", {"合同会社"}},
{"", {"合名会社"}},
{"", {"合資会社"}},
{"", {"一般都道", "一般県道", "一般府道", "一般道道"}},
{"一社", {"一般社団法人"}},
{"一財", {"一般財団法人"}},
{"", {"医療法人"}},
{"", {"株式会社"}},
{"", {"国立大学法人", "公立大学法人"}},
{"", {"高等学校"}},
{"高校", {"高等学校"}},
{"", {"小学校"}},
{"", {"主要地方道"}},
{"", {"有限会社"}},
{"", {"財団法人"}},
{"burg", {"burgemeester"}},
{"cmdt", {"commandant", "comandante"}},
{"drs", {"doctorandus"}},
{"ds", {"dominee"}},
{"gebr", {"gebroeders"}},
{"ir", {"ingenieur"}},
{"jhr", {"jonkheer"}},
{"kol", {"kolonel", "kolonia"}},
{"kan", {"kanunnik"}},
{"kard", {"kardinaal", "kardynał"}},
{"kte", {"kort"}},
{"kon", {"koning", "koningin"}},
{"ln", {"laan"}},
{"luit", {"luitenant"}},
{"mr", {"meester"}},
{"mej", {"mejuffrouw"}},
{"mevr", {"mevrouw"}},
{"min", {"minister", "ministro"}},
{"mgr", {"monseigneur"}},
{"nz", {"noordzijde"}},
{"n z", {"noordzijde"}},
{"n. z", {"noordzijde"}},
{"oz", {"oostzijde"}},
{"o z", {"oostzijde"}},
{"o. z", {"oostzijde"}},
{"o.l.v", {"onze-lieve-vrouw"}},
{"o.l.v", {"onze-lieve-vrouw"}},
{"olv", {"onze-lieve-vrouw"}},
{"past", {"pastoor"}},
{"pln", {"plein"}},
{"pr", {"praça", "prinses", "prins"}},
{"sngl", {"singel"}},
{"stwg", {"steenweg"}},
{"st", {"sint"}},
{"v. d.", {"van de", "van den", "van der"}},
{"vd", {"van de", "van den", "van der"}},
{"verl", {"verlengde"}},
{"vlt", {"vliet"}},
{"vr", {"vrouwe"}},
{"wg", {"weg"}},
{"wz", {"westzijde"}},
{"w z", {"westzijde"}},
{"w. z", {"westzijde"}},
{"zz", {"zuidzijde"}},
{"z z", {"zuidzijde"}},
{"z. z", {"zuidzijde"}},
{"zr", {"zuster"}},
{"vn", {"vegen", "veien", "veg", "vei"}},
{"gt", {"gata", "gaten", "gate"}},
{"sv", {"sveti", "sving", "svetega", "svätého", "svätej", "sveta", "svete", "svingen"}},
{"lung", {"lungsod"}},
{"pam", {"pamantasan"}},
{"wyb", {"wybrzeża", "wybrzeże", "wybrzeżem"}},
{"bulw", {"bulwar"}},
{"dln", {"dolna", "dolne", "dolny"}},
{"dz", {"duże", "duża", "duży"}},
{"", {"duże", "duża", "duży"}},
{"", {"mała", "mały", "małe"}},
{"maz", {"mazowiecka", "mazowiecki", "mazowieckie"}},
{"m", {"municipal", "miasto"}},
{"os", {"osiedlu", "osiedle"}},
{"wlkp", {"wielkopolski", "wielkopolskie", "wielkopolska"}},
{"woj", {"województwie", "województwo"}},
{"płk", {"pułkownika (pułkownik)"}},
{"marsz", {"marszałka (marszałek)"}},
{"św", {"świętego", "święci", "świętych", "święty", "święta", "świętej"}},
{"śś", {"świętych", "święci"}},
{"oo", {"ojców"}},
{"", {"błogosławionego", "błogosławiona", "błogosławionej", "błogosławieni", "błogosławionych", "błogosławiony"}},
{"ks", {"księdza", "ksiądz", "księcia", "książe", "khách sạn"}},
{"mjr", {"majora", "major"}},
{"bpa", {"biskupa", "biskup"}},
{"bp", {"biskupa", "biskup"}},
{"rotm", {"rotmistrza", "rotmistrz"}},
{"hr", {"hrabiego", "hrabiny", "hrabia", "hrabina"}},
{"por", {"porucznika", "porucznik", "poručíka"}},
{"ppłk", {"ppułkownika", "podpułkownika", "podpułkownik"}},
{"ppor", {"pporucznika", "podporucznika", "podporucznik"}},
{"chor", {"chorążego", "chorąży"}},
{"szer", {"szeregowego", "szeregowego"}},
{"kpr", {"kaprala", "kapral"}},
{"plut", {"plutonowego", "plutonowy"}},
{"kpt", {"kapitana", "kapitan", "kapitána"}},
{"adm", {"admirała", "admirał"}},
{"wadm", {"wiceadmirała", "wiceadmirał"}},
{"kontradm", {"kontradmirała", "kontradmirał"}},
{"bat", {"batalionu", "batalion", "batalionów", "bataliony"}},
{"ass", {"associação"}},
{"alf", {"alferes"}},
{"alm", {"almirante"}},
{"arq", {"arquiteto", "arquitecto"}},
{"arqº", {"arquiteto", "arquitecto"}},
{"avª", {"avenida"}},
{"az", {"azinhaga"}},
{"", {"bairro"}},
{"bc", {"beco"}},
{"bco", {"beco"}},
{"bv", {"bombeiros voluntários"}},
{"b.v", {"bombeiros voluntários"}},
{"cac", {"cacique"}},
{"cc", {"calçada", "centro comercial"}},
{"ccnh", {"calçadinha"}},
{"cm", {"câmara municipal"}},
{"c.m", {"câmara municipal"}},
{"c. m", {"câmara municipal"}},
{"cam", {"caminho"}},
{"cap", {"capitão"}},
{"csl", {"casal"}},
{"c.c", {"centro comercial"}},
{"ceb", {"ciclo do ensino básico"}},
{"c.e.b", {"ciclo do ensino básico"}},
{"c. e. b", {"ciclo do ensino básico"}},
{"comend", {"comendador"}},
{"", {"companhia"}},
{"cons", {"conselheiro"}},
{"cel", {"coronel"}},
{"d´", {"de"}},
{"d'", {"de"}},
{"dep", {"deputado"}},
{"dto", {"direito"}},
{"d", {"dom", "dona"}},
{"", {"dona"}},
{"drª", {"doutora"}},
{"dq", {"duque"}},
{"ed", {"edifício"}},
{"edf", {"edifício"}},
{"emb", {"embaixador"}},
{"ep", {"empresa pública"}},
{"e.p", {"empresa pública"}},
{"enfo", {"enfermeiro"}},
{"enfº", {"enfermeiro"}},
{"enf", {"enfermeiro"}},
{"eng", {"engenheira", "engenheiro"}},
{"engº", {"engenheiro"}},
{"engª", {"engenheira"}},
{"escnh", {"escadinhas"}},
{"eb", {"escola básica"}},
{"e.b", {"escola básica"}},
{"e. b", {"escola básica"}},
{"esq", {"esquerdo"}},
{"etar", {"estação de tratamento de águas residuais"}},
{"e.t.a.r", {"estação de tratamento de águas residuais"}},
{"estr", {"estrada"}},
{"em", {"estrada municipal"}},
{"er", {"estrada regional"}},
{"fc", {"futebol clube"}},
{"f.c", {"futebol clube"}},
{"gnr", {"guarda nacional republicana"}},
{"g.n.r", {"guarda nacional republicana"}},
{"inf", {"infante"}},
{"inst", {"instituto"}},
{"ima", {"irmã"}},
{"imª", {"irmã"}},
{"im", {"irmã", "irmão"}},
{"imo", {"irmão"}},
{"imº", {"irmão"}},
{"ic", {"itinerário complementar"}},
{"ip", {"itinerário principal", "idrottsplats"}},
{"jrd", {"jardim"}},
{"lg", {"largo", "lugar"}},
{"lda", {"limitada"}},
{"lj", {"loja"}},
{"loteam", {"loteamento"}},
{"lug", {"lugar"}},
{"mto", {"maestro"}},
{"mq", {"marquês"}},
{"me", {"madre", "mestre"}},
{"mons", {"monsenhor"}},
{"", {"nossa"}},
{"ns", {"nossa senhora"}},
{"", {"número"}},
{"pe", {"padre"}},
{"pq", {"parque"}},
{"part", {"particular"}},
{"psp", {"polícia de segurança pública"}},
{"p.s.p", {"polícia de segurança pública"}},
{"pj", {"polícia judiciária"}},
{"p.j", {"polícia judiciária"}},
{"pc", {"praça"}},
{"", {"praça"}},
{"pctª", {"praceta"}},
{"presid", {"presidente"}},
{"", {"primeiro"}},
{"profª", {"professora"}},
{"proj", {"projectada", "projetada"}},
{"prolng", {"prolongamento"}},
{"q", {"quadra", "quận"}},
{"qta", {"quinta"}},
{"r/c", {"rés-do-chão"}},
{"rc", {"rés-do-chão"}},
{"rot", {"rotunda"}},
{"", {"ribeira"}},
{"rib", {"ribeirão", "ribeira"}},
{"ribª", {"ribeira"}},
{"stª", {"santa"}},
{"stº", {"santo"}},
{"sarg", {"sargento"}},
{"", {"senhora"}},
{"srª", {"senhora"}},
{"sr.ª", {"senhora"}},
{"s.ra", {"senhora"}},
{"slj", {"sobre-loja"}},
{"soc", {"sociedade"}},
{"sa", {"sociedade anónima"}},
{"s.a", {"sociedade anónima"}},
{"s.c", {"sport clube"}},
{"s. c", {"sport clube"}},
{"scv", {"sub-cave"}},
{"ten", {"tenente"}},
{"transv", {"transversal"}},
{"tv", {"travessa"}},
{"vl", {"vila"}},
{"visc", {"visconde"}},
{"vv", {"vivenda"}},
{"zn", {"zona"}},
{"ale", {"aleea"}},
{"aleea", {"aleea"}},
{"alea", {"aleea"}},
{"bul", {"bulevardul"}},
{"bdul", {"bulevardul"}},
{"blv", {"bulvar", "bulevardul"}},
{"b-dul", {"bulevardul"}},
{"b.dul", {"bulevardul"}},
{"bulev", {"bulevardul"}},
{"bulevard", {"bulevardul"}},
{"bulevardu", {"bulevardul"}},
{"cal", {"calea"}},
{"fnd", {"fundătura"}},
{"fdc", {"fundacul"}},
{"intr", {"intrarea"}},
{"intrarea", {"intrarea"}},
{"pţa", {"piața"}},
{"pța", {"piața"}},
{"p-ta", {"piața"}},
{"p-ţa", {"piața"}},
{"p-ța", {"piața"}},
{"piața", {"piața"}},
{"piaţa", {"piața"}},
{"piață", {"piața"}},
{"piaţă", {"piața"}},
{"piată", {"piața"}},
{"piata", {"piața"}},
{"strada", {"strada"}},
{"str-la", {"stradela"}},
{"sdla", {"stradela"}},
{"sos", {"șoseaua"}},
{"soseaua", {"șoseaua"}},
{"splaiul", {"splaiul"}},
{"spl", {"splaiul"}},
{"vf", {"vârful"}},
{"virful", {"vârful"}},
{"vîrful", {"vârful"}},
{"varful", {"vârful"}},
{"virf", {"vârful"}},
{"varf", {"vârful"}},
{"m-tele", {"muntele"}},
{"m-te", {"muntele"}},
{"просп", {"проспект"}},
{"обл", {"область"}},
{"gd", {"gasilski dom"}},
{"", {"osnovna šola"}},
{"pgd", {"prostovoljno gasilsko društvo"}},
{"savinj", {"savinjski"}},
{"slov", {"slovenskih"}},
{"št", {"šent"}},
{"vel", {"veliki", "velike", "veliko", "velika", "velikem"}},
{"zd", {"zdravstveni dom"}},
{"zg", {"zgornja", "zgornji", "zgornje"}},
{"arm. gen", {"armádneho generála"}},
{"mjr", {"majora"}},
{"čsl", {"československej"}},
{"plk", {"plukovníka"}},
{"pplk", {"podplukovníka"}},
{"ppor", {"podporučíka"}},
{"sídl", {"sídlisko"}},
{"nábr", {"nábrežie"}},
{"as", {"asema"}},
{"auk", {"aukio"}},
{"kri", {"kaari"}},
{"kj", {"kuja"}},
{"pgr", {"penger"}},
{"pko", {"puistikko"}},
{"ras", {"rautatieasema"}},
{"rn", {"rinne"}},
{"tvl", {"taival"}},
{"th", {"tiểu học", "tienhaara"}},
{"vlä", {"väylä"}},
{"g:la", {"gamla"}},
{"s:a", {"södra"}},
{"n:a", {"norra"}},
{"ö", {"östra"}},
{"ö:a", {"östra"}},
{"v:a", {"västra"}},
{"s:t", {"sankt"}},
{"s:ta", {"sankta"}},
{"sk", {"sokak", "sokağı"}},
{"sok", {"sokak", "sokağı"}},
{"mh", {"mahalle"}},
{"mah", {"mahalle"}},
{"tp", {"thành phố"}},
{"tx", {"thị xã"}},
{"tt", {"trung tâm", "thị trấn"}},
{"ql", {"quốc lộ"}},
{"tl", {"tỉnh lộ"}},
{"đl", {"đại lộ"}},
{"đ", {"đường"}},
{"qt", {"quảng trường"}},
{"sb", {"sân bay"}},
{"sbqt", {"sân bay quốc tế"}},
{"đs", {"đường sắt"}},
{"tttm", {"trung tâm thương mại"}},
{"k/s", {"khách sạn"}},
{"", {"bưu điện"}},
{"đh", {"đại học"}},
{"", {"cao đẳng"}},
{"thpt", {"trung học phổ thông"}},
{"thcs", {"trung học cơ sở"}},
{"kcn", {"khu công nghiệp"}},
{"knm", {"khu nghỉ mát"}},
{"kdl", {"khu du lịch"}},
{"cvvh", {"công viên văn hóa"}},
{"vqg", {"vươn quốc gia"}},
{"vbt", {"viện bảo tàng"}},
{"svđ", {"sân vận động"}},
{"ntđ", {"nhà thi đấu"}},
{"clb", {"câu lạc bộ"}},
{"nt", {"nhà thờ"}},
{"nh", {"nhà hát"}},
{"tcty", {"tổng công ty"}},
{"tct", {"tổng công ty"}},
{"ctcp", {"công ty cổ phần"}},
{"cty cp", {"công ty cổ phần"}},
{"cckq", {"căn cứ không quân"}},
{"дор", {"дорога"}},
{"пров", {"провулок"}},
{"вул", {"вулиця"}},
{"ش", {"شارع"}},
{"ط", {"طريق"}},
{"م", {"ميدان"}}
};
} // namespace
// QueryParams::Token ------------------------------------------------------------------------------
void QueryParams::Token::AddSynonym(string const & s)
{
AddSynonym(strings::MakeUniString(s));
}
void QueryParams::Token::AddSynonym(String const & s)
{
if (!IsStopWord(s))
m_synonyms.push_back(s);
}
string DebugPrint(QueryParams::Token const & token)
{
ostringstream os;
os << "Token [ m_original=" << DebugPrint(token.GetOriginal())
<< ", m_synonyms=" << DebugPrint(token.m_synonyms) << " ]";
return os.str();
}
// QueryParams -------------------------------------------------------------------------------------
void QueryParams::ClearStreetIndices()
{
class AdditionalCommonTokens
{
set<String> m_strings;
public:
AdditionalCommonTokens()
{
char const * arr[] = {
"the", // English
"der", "zum", "und", "auf", // German
"del", "les", // Spanish
"в", "на" // Cyrillic
};
for (char const * s : arr)
m_strings.insert(NormalizeAndSimplifyString(s));
}
bool Has(String const & s) const { return m_strings.count(s) > 0; }
};
static AdditionalCommonTokens const s_addCommonTokens;
size_t const count = GetNumTokens();
m_isCommonToken.resize(count, false);
for (size_t i = 0; i < count; ++i)
{
auto const & token = GetToken(i).GetOriginal();
if (IsStreetSynonym(token))
{
m_typeIndices[i].clear();
m_isCommonToken[i] = true;
}
else if (s_addCommonTokens.Has(token))
m_isCommonToken[i] = true;
}
}
void QueryParams::Clear()
{
m_tokens.clear();
m_prefixToken.Clear();
m_hasPrefix = false;
m_isCommonToken.clear();
m_typeIndices.clear();
m_langs.Clear();
}
bool QueryParams::IsCategorySynonym(size_t i) const { return !GetTypeIndices(i).empty(); }
QueryParams::TypeIndices & QueryParams::GetTypeIndices(size_t i)
{
ASSERT_LESS(i, GetNumTokens(), ());
return m_typeIndices[i];
}
QueryParams::TypeIndices const & QueryParams::GetTypeIndices(size_t i) const
{
ASSERT_LESS(i, GetNumTokens(), ());
return m_typeIndices[i];
}
bool QueryParams::IsPrefixToken(size_t i) const
{
ASSERT_LESS(i, GetNumTokens(), ());
return i == m_tokens.size();
}
QueryParams::Token const & QueryParams::GetToken(size_t i) const
{
ASSERT_LESS(i, GetNumTokens(), ());
return i < m_tokens.size() ? m_tokens[i] : m_prefixToken;
}
QueryParams::Token & QueryParams::GetToken(size_t i)
{
ASSERT_LESS(i, GetNumTokens(), ());
return i < m_tokens.size() ? m_tokens[i] : m_prefixToken;
}
bool QueryParams::IsCommonToken(size_t i) const
{
return i < m_isCommonToken.size() && m_isCommonToken[i];
}
bool QueryParams::IsNumberTokens(TokenRange const & range) const
{
ASSERT(range.IsValid(), (range));
ASSERT_LESS_OR_EQUAL(range.End(), GetNumTokens(), ());
for (size_t i : range)
{
if (!GetToken(i).AnyOfOriginalOrSynonyms([](String const & s) { return strings::IsASCIINumeric(s); }))
return false;
}
return true;
}
void QueryParams::RemoveToken(size_t i)
{
ASSERT_LESS(i, GetNumTokens(), ());
if (i == m_tokens.size())
{
m_prefixToken.Clear();
m_hasPrefix = false;
}
else
{
m_tokens.erase(m_tokens.begin() + i);
}
m_typeIndices.erase(m_typeIndices.begin() + i);
}
void QueryParams::AddSynonyms()
{
for (auto & token : m_tokens)
{
string const ss = ToUtf8(MakeLowerCase(token.GetOriginal()));
auto const it = kSynonyms.find(ss);
if (it != kSynonyms.end())
{
for (auto const & synonym : it->second)
token.AddSynonym(synonym);
}
}
if (m_hasPrefix)
{
string const ss = ToUtf8(MakeLowerCase(m_prefixToken.GetOriginal()));
auto const it = kSynonyms.find(ss);
if (it != kSynonyms.end())
{
for (auto const & synonym : it->second)
m_prefixToken.AddSynonym(synonym);
}
}
}
string DebugPrint(QueryParams const & params)
{
ostringstream os;
os << boolalpha << "QueryParams "
<< "{ m_tokens: " << ::DebugPrint(params.m_tokens)
<< ", m_prefixToken: " << DebugPrint(params.m_prefixToken)
<< ", m_typeIndices: " << ::DebugPrint(params.m_typeIndices)
<< ", m_langs: " << DebugPrint(params.m_langs)
<< ", m_isCommonToken: " << ::DebugPrint(params.m_isCommonToken)
<< " }";
return os.str();
}
} // namespace search