--- dao/DaoAdresseService/src/main/java/dk/daoas/daoadresseservice/AddressSearch.java 2015/11/30 13:47:21 2787 +++ dao/DaoAdresseService/src/main/java/dk/daoas/daoadresseservice/AddressSearch.java 2016/01/13 11:04:36 2804 @@ -216,7 +216,7 @@ Address addr = litraList.get( result.splitResult.litra ); if (addr == null) { //litra ikke fundet - if (config.nearestLitra == true) { + if (config.nearestLitra == true || naermesteHusnr == true) { result.nearestLitra = true; addr = litraList.values().iterator().next(); } else { @@ -265,7 +265,7 @@ } if (gadeident == null) { - String vej = levenshteinHelper.proposeStreetName(request, result); + String vej = metaphoneHelper.proposeStreetName(request, result); if (vej != null) { gadeident = request.streetNames.get(vej); } @@ -321,14 +321,20 @@ Map idAddressMap = new HashMap( alleAdresser.size() ); DeduplicateHelper aliasHelper = new DeduplicateHelper(); + DeduplicateHelper shortHelper = new DeduplicateHelper(); + DeduplicateHelper intHelper = new DeduplicateHelper(); + + for (Address a : alleAdresser) { idAddressMap.put(a.id, a); - Map postnrVeje = searchPostnrVejnavnGadeid.get(a.postnr); + Short postnr = shortHelper.getInstance(a.postnr); + + Map postnrVeje = searchPostnrVejnavnGadeid.get(postnr); if (postnrVeje == null) { - postnrVeje = new ConcurrentHashMap(); - searchPostnrVejnavnGadeid.put(a.postnr, postnrVeje); + postnrVeje = new HashMap(10240); //lige nu indeholder den største 9500 entries + searchPostnrVejnavnGadeid.put(postnr, postnrVeje); } @@ -337,7 +343,7 @@ if (gadeident == null) { //postnrVeje.put(vasketVejnavn, a.gadeid); - gadeident = a.gadeid; + gadeident = intHelper.getInstance( a.gadeid ); Set aliaser = findVejAliaser(a.vejnavn); for(String alias : aliaser) { @@ -345,9 +351,11 @@ vasketAlias = aliasHelper.getInstance(vasketAlias); postnrVeje.put(vasketAlias, gadeident); - } + } + } + Map> gade = searchGadeidentAdresser.get(gadeident); if (gade == null) { gade = new TreeMap>(); @@ -362,7 +370,7 @@ litraList.put(a.husnrbogstav, a); } - + //////////////////////////////////////////////////////////////////////////////////////// long start2 = System.currentTimeMillis(); System.out.println("Build, stage1 elapsed: " + (start2-start1) ); @@ -797,8 +805,7 @@ // Opbyg æøå varianter over alle fundne aliaser - @SuppressWarnings("unchecked") - HashSet variants = (HashSet) aliasSet.clone(); + HashSet variants = new HashSet( aliasSet ); for (String vVejnavn : variants) { // danske tegn 1 @@ -818,19 +825,19 @@ aliasSet.add( vVejnavn.replace("oe", "ø").replace("aa", "å") ); //danske tegn 3 - aliasSet.add( vejnavn.replace("æ", "ae").replace("ø", "oe").replace("å", "aa") ); - aliasSet.add( vejnavn.replace("ae", "æ").replace("oe", "ø").replace("aa", "å") ); + aliasSet.add( vVejnavn.replace("æ", "ae").replace("ø", "oe").replace("å", "aa") ); + aliasSet.add( vVejnavn.replace("ae", "æ").replace("oe", "ø").replace("aa", "å") ); //udenlandsketegn - aliasSet.add(vejnavn.replace("u", "ü") ); - aliasSet.add(vejnavn.replace("ü", "u") ); + aliasSet.add( vVejnavn.replace("u", "ü") ); + aliasSet.add( vVejnavn.replace("ü", "u") ); - aliasSet.add(vejnavn.replace("ä", "æ") ); - aliasSet.add(vejnavn.replace("æ", "ä") ); + aliasSet.add( vVejnavn.replace("ä", "æ") ); + aliasSet.add( vVejnavn.replace("æ", "ä") ); - aliasSet.add(vejnavn.replace("ö", "ø") ); - aliasSet.add(vejnavn.replace("ø", "ö") ); + aliasSet.add( vVejnavn.replace("ö", "ø") ); + aliasSet.add( vVejnavn.replace("ø", "ö") ); } return aliasSet;