#include "search/query_params.hpp" #include "search/ranking_utils.hpp" #include "search/token_range.hpp" #include #include 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> 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ř", {"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", "grand’rue", "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"}}, {"nö", {"niederösterreichischer", "niederösterreichisches", "niederösterreich", "niederösterreichische"}}, {"nördl", {"nördlicher", "nördliche", "nördliches"}}, {"o", {"ob"}}, {"ob", {"oberer", "obere", "oberes"}}, {"oö", {"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"}}, {"1°", {"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"}}, {"dż", {"duże", "duża", "duży"}}, {"mł", {"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ł", {"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"}}, {"bº", {"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"}}, {"cª", {"companhia"}}, {"cons", {"conselheiro"}}, {"cel", {"coronel"}}, {"d´", {"de"}}, {"d'", {"de"}}, {"dep", {"deputado"}}, {"dto", {"direito"}}, {"d", {"dom", "dona"}}, {"dª", {"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"}}, {"nª", {"nossa"}}, {"ns", {"nossa senhora"}}, {"nº", {"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"}}, {"pç", {"praça"}}, {"pctª", {"praceta"}}, {"presid", {"presidente"}}, {"1º", {"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"}}, {"rª", {"ribeira"}}, {"rib", {"ribeirão", "ribeira"}}, {"ribª", {"ribeira"}}, {"stª", {"santa"}}, {"stº", {"santo"}}, {"sarg", {"sargento"}}, {"sª", {"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"}}, {"oš", {"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đ", {"bưu điện"}}, {"đh", {"đại học"}}, {"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 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