--- dao/DaoAdresseService/src/dk/daoas/daoadresseservice/AdressSearch.java 2015/02/27 08:24:56 2394 +++ dao/DaoAdresseService/src/dk/daoas/daoadresseservice/AdressSearch.java 2015/02/27 09:39:05 2395 @@ -16,6 +16,7 @@ import dk.daoas.daoadresseservice.admin.ServiceConfig; import dk.daoas.daoadresseservice.beans.Address; +import dk.daoas.daoadresseservice.beans.AliasBean; import dk.daoas.daoadresseservice.beans.DataStatisticsBean; import dk.daoas.daoadresseservice.beans.ExtendedBean; import dk.daoas.daoadresseservice.beans.HundredePctBean; @@ -98,14 +99,7 @@ result.osmVej = GeocodeHelper.openstreetmapHelper(config, postnr, result.splitResult.vej ); result.osm = true; - if (result.osmVej != null) { - String osmVasket = AddressUtils.vaskVejnavn( result.osmVej ); - gadeident = postnrVeje.get(osmVasket); - - if (gadeident != null) { - helperCache.put(helperSearchKey, gadeident); - } - } + gadeident = helperWrapper(result.osmVej, postnrVeje, helperSearchKey); } } @@ -114,14 +108,7 @@ result.googleVej = GeocodeHelper.googleHelper(config, postnr, result.splitResult.vej ); result.google = true; - if (result.googleVej != null) { - String googleVasket = AddressUtils.vaskVejnavn( result.googleVej ); - gadeident = postnrVeje.get(googleVasket); - - if (gadeident != null) { - helperCache.put(helperSearchKey, gadeident); - } - } + gadeident = helperWrapper(result.googleVej, postnrVeje, helperSearchKey); } } @@ -132,6 +119,7 @@ return result; } + Map gade = searchGadeidentAdresser.get(gadeident); if (gade == null) { //Denne søgning må ikke fejle result.status = Status.ERROR_INTERNAL; @@ -166,6 +154,23 @@ return result; } + private Long helperWrapper(String vej, Map postnrVeje, String helperSearchKey) { + if (vej == null) + return null; + + String vejVasket = AddressUtils.vaskVejnavn( vej ); + Long gadeident = postnrVeje.get(vejVasket); + + if (gadeident != null) { + helperCache.put(helperSearchKey, gadeident); + } + return gadeident; + + } + + + + public void buildSearchStructures() throws SQLException{ searchPostnrVejnavnGadeid = new HashMap>(); @@ -213,11 +218,45 @@ gade.put(husnrSearch, a); } - //////////////////////////////////////////////////////////////////////////////////////// long start2 = System.currentTimeMillis(); System.out.println("Build, stage1 elapsed: " + (start2-start1) ); - System.out.println("Build -- stage 2 udvidet dækning"); + System.out.println("Build -- stage 2 alias tabel"); + + int vaskCount = 0; + List aliasList = DatabaseLayer.getAliasList(); + for (AliasBean alias : aliasList) { + Map postnrVeje = searchPostnrVejnavnGadeid.get(alias.postnr); + + if (postnrVeje == null) { + //Burde ikke kunne ske - men better safe than sorry + continue; + } + + String vasketVej = AddressUtils.vaskVejnavn(alias.vejnavn); + String vasketAlias = AddressUtils.vaskVejnavn(alias.aliasVejnavn); + + Long gadeident = postnrVeje.get(vasketVej); + if (gadeident == null) { + //Kender ikke den oprindelige vej + continue; + } + + Long aliasIdent = postnrVeje.get(vasketAlias); + + if (aliasIdent == null) { //Vi kender ikke denne variant af vejnavnet + postnrVeje.put(vasketAlias, gadeident); + vaskCount++; + } + + } + System.out.println("Anvendte " + vaskCount + " aliaser fra databasen"); + + + //////////////////////////////////////////////////////////////////////////////////////// + long start3 = System.currentTimeMillis(); + System.out.println("Build, stage2 elapsed: " + (start3-start2) ); + System.out.println("Build -- stage 3 udvidet dækning"); List extDao = DatabaseLayer.getExtendedAdresslist(); for (ExtendedBean eb : extDao) { @@ -274,9 +313,9 @@ idAddressMap = null; ////////////////////////////////////////////////////////////////////////////////////// - long start3 = System.currentTimeMillis(); - System.out.println("Build, stage2 elapsed: " + (start3-start2) ); - System.out.println("Build -- stage 3 - 100pct"); + long start4 = System.currentTimeMillis(); + System.out.println("Build, stage3 elapsed: " + (start4-start3) ); + System.out.println("Build -- stage 4 - 100pct"); Map hundredePct = DatabaseLayer.get100PctList(); for (Address addr : alleAdresser) { @@ -303,7 +342,7 @@ //////////////////////////////////////////////////////////////////////////////////// long stop = System.currentTimeMillis(); - System.out.println("Build, stage3 elapsed: " + (stop-start3) ); + System.out.println("Build, stage3 elapsed: " + (stop-start4) ); System.out.println("Build -- Gathering statistics"); for (Address addr : alleAdresser) {