--- dao/DaoAdresseService/src/dk/daoas/daoadresseservice/AdressSearch.java 2015/02/15 17:05:07 2304 +++ dao/DaoAdresseService/src/dk/daoas/daoadresseservice/AdressSearch.java 2015/02/16 14:31:05 2312 @@ -3,6 +3,7 @@ import java.sql.SQLException; import java.util.HashMap; import java.util.HashSet; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; @@ -34,6 +35,7 @@ int postnr=0; boolean google = false; boolean osm = false; + String helperSearchKey = ""; try { postnr = Integer.parseInt(postnrStr); @@ -57,8 +59,10 @@ Long gadeident = postnrVeje.get(vasketVejnavn); + if ( gadeident == null) { - gadeident = helperCache.get(vasketVejnavn); + helperSearchKey = "" + postnr + "/" + vasketVejnavn; + gadeident = helperCache.get(helperSearchKey); } @@ -71,7 +75,7 @@ gadeident = postnrVeje.get(googleVasket); if (gadeident != null) { - helperCache.put(vasketVejnavn, gadeident); + helperCache.put(helperSearchKey, gadeident); } } } @@ -85,7 +89,7 @@ gadeident = postnrVeje.get(osmVasket); if (gadeident != null) { - helperCache.put(vasketVejnavn, gadeident); + helperCache.put(helperSearchKey, gadeident); } } } @@ -124,6 +128,7 @@ searchGadeidentAdresser = new HashMap>(); helperCache = new ConcurrentHashMap(); + long start1 = System.currentTimeMillis(); System.out.println("Build -- stage 1"); alleAdresser = DatabaseLayer.getAllAdresses(); @@ -166,6 +171,8 @@ //////////////////////////////////////////////////////////////////////////////////////// + long start2 = System.currentTimeMillis(); + System.out.println("Build, stage1 elapsed: " + (start2-start1) ); System.out.println("Build -- stage 2 udvidet dækning"); List extDao = DatabaseLayer.getExtendedAdresslist(); @@ -223,6 +230,8 @@ idAddressMap = null; ////////////////////////////////////////////////////////////////////////////////////// + long start3 = System.currentTimeMillis(); + System.out.println("Build, stage2 elapsed: " + (start3-start2) ); System.out.println("Build -- stage 3 - 100pct"); hundredePct = DatabaseLayer.get100PctList(); @@ -249,6 +258,8 @@ } //////////////////////////////////////////////////////////////////////////////////// + long stop = System.currentTimeMillis(); + System.out.println("Build, stage3 elapsed: " + (stop-start3) ); System.out.println("Build -- Gathering statistics"); int direkteCount = 0; @@ -277,6 +288,7 @@ System.out.println("Build: hundredePctCount: " + hundredePctCount); System.out.println("Build: ikkeDaekketCount: " + ikkeDaekketCount); + System.out.println("Build: Total Elapsed: " + (stop-start1) ); System.out.println("Build Completed"); } @@ -336,32 +348,14 @@ private Set findVejAliaser(String vejnavn) { vejnavn = vejnavn.toLowerCase(); - Set aliasSet = new HashSet(); + HashSet aliasSet = new HashSet(); aliasSet.add(vejnavn); - aliasSet.add(vejnavn.replace("alle", "allé") ); - aliasSet.add(vejnavn.replace("allé", "alle") ); - - // danske tegn 1 - aliasSet.add(vejnavn.replace("æ", "ae") ); - aliasSet.add(vejnavn.replace("ø", "oe") ); - aliasSet.add(vejnavn.replace("å", "aa") ); - aliasSet.add(vejnavn.replace("ae", "æ") ); - aliasSet.add(vejnavn.replace("oe", "ø") ); - aliasSet.add(vejnavn.replace("aa", "å") ); - - //danske tegn 2 - aliasSet.add( vejnavn.replace("æ", "ae").replace("ø", "oe") ); - aliasSet.add( vejnavn.replace("æ", "ae").replace("å", "aa") ); - aliasSet.add( vejnavn.replace("ø", "ae").replace("å", "aa") ); - aliasSet.add( vejnavn.replace("ae", "æ").replace("oe","ø") ); - aliasSet.add( vejnavn.replace("ae", "æ").replace("aa","å") ); - aliasSet.add( vejnavn.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(vejnavn.replace("u", "ü") ); + aliasSet.add(vejnavn.replace("ü", "u") ); + aliasSet.add(vejnavn.replace("alle", "allé") ); + aliasSet.add(vejnavn.replace("allé", "alle") ); aliasSet.add(vejnavn.replace("dronningens", "dr") ); aliasSet.add(vejnavn.replace("dr.", "dronningens") ); @@ -392,10 +386,41 @@ aliasSet.add(vejnavn.replace("ndr", "nordre") ); aliasSet.add(vejnavn.replace("sankt", "skt") ); + aliasSet.add(vejnavn.replace("sankt", "sct") ); aliasSet.add(vejnavn.replace("skt", "sankt") ); aliasSet.add(vejnavn.replace("skt", "sct") ); - aliasSet.add(vejnavn.replace("sct", "skt") ); + aliasSet.add(vejnavn.replace("sct", "skt") ); + + // Opbyg æøå varianter over alle fundne aliaser + + @SuppressWarnings("unchecked") + HashSet variants = (HashSet) aliasSet.clone(); + + Iterator vIt = variants.iterator(); + while ( vIt.hasNext() ) { + String vVejnavn = vIt.next(); + + // danske tegn 1 + aliasSet.add( vVejnavn.replace("æ", "ae") ); + aliasSet.add( vVejnavn.replace("ø", "oe") ); + aliasSet.add( vVejnavn.replace("å", "aa") ); + aliasSet.add( vVejnavn.replace("ae", "æ") ); + aliasSet.add( vVejnavn.replace("oe", "ø") ); + aliasSet.add( vVejnavn.replace("aa", "å") ); + + //danske tegn 2 + aliasSet.add( vVejnavn.replace("æ", "ae").replace("ø", "oe") ); + aliasSet.add( vVejnavn.replace("æ", "ae").replace("å", "aa") ); + aliasSet.add( vVejnavn.replace("ø", "ae").replace("å", "aa") ); + aliasSet.add( vVejnavn.replace("ae", "æ").replace("oe","ø") ); + aliasSet.add( vVejnavn.replace("ae", "æ").replace("aa","å") ); + 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", "å") ); + } return aliasSet; }