--- dao/DaoAdresseService/src/dk/daoas/daoadresseservice/AdressSearch.java 2015/02/27 09:39:05 2395 +++ dao/DaoAdresseService/src/dk/daoas/daoadresseservice/AdressSearch.java 2015/02/28 16:14:55 2409 @@ -37,8 +37,14 @@ ServiceConfig config; + StreetnameHelper googleHelper; + StreetnameHelper osmHelper; + public AdressSearch(ServiceConfig config) { this.config = config; + + googleHelper = new GoogleStreetnameHelper( config ); + osmHelper = new OSMStreetnameHelper( config ); } @@ -95,21 +101,13 @@ // Brug OpenStreetMap før vi prøver google // For google har en request limit, det har OSM ikke! if ( gadeident == null) { - if (config.useOpenStreetMaps) { - result.osmVej = GeocodeHelper.openstreetmapHelper(config, postnr, result.splitResult.vej ); - result.osm = true; - - gadeident = helperWrapper(result.osmVej, postnrVeje, helperSearchKey); - } + String vej = osmHelper.proposeStreetName(result, postnr, result.splitResult.vej); + gadeident = helperWrapper(vej, postnrVeje, helperSearchKey); } if ( gadeident == null) { - if (config.useGoogle) { - result.googleVej = GeocodeHelper.googleHelper(config, postnr, result.splitResult.vej ); - result.google = true; - - gadeident = helperWrapper(result.googleVej, postnrVeje, helperSearchKey); - } + String vej = googleHelper.proposeStreetName(result, postnr, result.splitResult.vej); + gadeident = helperWrapper(vej, postnrVeje, helperSearchKey); } @@ -119,6 +117,8 @@ return result; } + result.gadeident = gadeident; + Map gade = searchGadeidentAdresser.get(gadeident); if (gade == null) { //Denne søgning må ikke fejle @@ -127,6 +127,10 @@ } + //Kunne evt klares med Iterables.get fra Guava/Collections + Address firstAddress = gade.values().iterator().next(); + result.vej = firstAddress.vejnavn; + String husnrSearch = "" + result.splitResult.husnr + result.splitResult.litra; Address addr = gade.get(husnrSearch); @@ -198,21 +202,22 @@ String vasketVejnavn = AddressUtils.vaskVejnavn(a.vejnavn); Long gadeident = postnrVeje.get(vasketVejnavn); - if (gadeident == null) { + if (gadeident == null) { //postnrVeje.put(vasketVejnavn, a.gadeid); + gadeident = a.gadeid; + Set aliaser = findVejAliaser(a.vejnavn); for(String alias : aliaser) { String vasketAlias = AddressUtils.vaskVejnavn(alias); - postnrVeje.put(vasketAlias, a.gadeid); - } - + postnrVeje.put(vasketAlias, gadeident); + } } - Map gade = searchGadeidentAdresser.get(a.gadeid); + Map gade = searchGadeidentAdresser.get(gadeident); if (gade == null) { gade = new HashMap(); - searchGadeidentAdresser.put(a.gadeid, gade); + searchGadeidentAdresser.put(gadeident, gade); } String husnrSearch = "" + a.husnr + a.husnrbogstav; gade.put(husnrSearch, a); @@ -515,10 +520,50 @@ aliasSet.add(vejnavn.replace("sct", "skt") ); + // fornavn forkortelser + aliasSet.add(vejnavn.replace("john", "j") ); + aliasSet.add(vejnavn.replace("thomas", "th") ); + aliasSet.add(vejnavn.replace("thorvald", "th") ); + + + // Romertal + aliasSet.add(vejnavn.replace("1", "i") ); + aliasSet.add(vejnavn.replace("i", "1") ); + + aliasSet.add(vejnavn.replace("2", "ii") ); + aliasSet.add(vejnavn.replace("ii", "2") ); + + aliasSet.add(vejnavn.replace("3", "iii") ); + aliasSet.add(vejnavn.replace("iii", "3") ); + + aliasSet.add(vejnavn.replace("4", "iv") ); + aliasSet.add(vejnavn.replace("iv", "4") ); + + aliasSet.add(vejnavn.replace("5", "v") ); + aliasSet.add(vejnavn.replace("v", "5") ); + + aliasSet.add(vejnavn.replace("6", "vi") ); + aliasSet.add(vejnavn.replace("vi", "6") ); + + aliasSet.add(vejnavn.replace("7", "vii") ); + aliasSet.add(vejnavn.replace("vii", "7") ); + + aliasSet.add(vejnavn.replace("8", "viii") ); + aliasSet.add(vejnavn.replace("viii", "8") ); + + aliasSet.add(vejnavn.replace("9", "ix") ); + aliasSet.add(vejnavn.replace("ix", "9") ); + + aliasSet.add(vejnavn.replace("10", "x") ); + aliasSet.add(vejnavn.replace("x", "10") ); + + //alternative måder at stave vej/gade/alle aliasSet.add(vejnavn.replace("vej", "ve") ); aliasSet.add(vejnavn.replace("vej", "vj") ); aliasSet.add(vejnavn.replace("vej", "v") ); + aliasSet.add(vejnavn.replace("vej", "vejen") ); + aliasSet.add(vejnavn.replace("vejen", "vej") ); aliasSet.add(vejnavn.replace("alle", "all") ); aliasSet.add(vejnavn.replace("allé", "all") ); @@ -527,6 +572,9 @@ aliasSet.add(vejnavn.replace("gade", "gaed") ); //Fundet i logs.hentruteinfo + aliasSet.add(vejnavn.replace("plads", "pl") ); + aliasSet.add(vejnavn.replace("vænget", "vænge") ); + // Opbyg æøå varianter over alle fundne aliaser