--- dao/DaoAdresseService/src/dk/daoas/daoadresseservice/AdressSearch.java 2015/02/26 10:39:12 2382 +++ dao/DaoAdresseService/src/dk/daoas/daoadresseservice/AdressSearch.java 2015/02/26 16:09:39 2391 @@ -82,15 +82,25 @@ gadeident = helperCache.get(helperSearchKey); } + if (gadeident == null) { + String best = getbestLevenshteinDistance(vasketVejnavn, postnrVeje); + if (best != null) { + result.levenshtein = true; + gadeident = postnrVeje.get(best); + } + } + + // Brug OpenStreetMap før vi prøver google + // For google har en request limit, det har OSM ikke! if ( gadeident == null) { - if (config.useGoogle) { - result.googleVej = GeocodeHelper.googleHelper(config, postnr, result.splitResult.vej ); - result.google = true; + if (config.useOpenStreetMaps) { + result.osmVej = GeocodeHelper.openstreetmapHelper(config, postnr, result.splitResult.vej ); + result.osm = true; - if (result.googleVej != null) { - String googleVasket = AddressUtils.vaskVejnavn( result.googleVej ); - gadeident = postnrVeje.get(googleVasket); + if (result.osmVej != null) { + String osmVasket = AddressUtils.vaskVejnavn( result.osmVej ); + gadeident = postnrVeje.get(osmVasket); if (gadeident != null) { helperCache.put(helperSearchKey, gadeident); @@ -100,13 +110,13 @@ } if ( gadeident == null) { - if (config.useOpenStreetMaps) { - result.osmVej = GeocodeHelper.openstreetmapHelper(config, postnr, result.splitResult.vej ); - result.osm = true; + if (config.useGoogle) { + result.googleVej = GeocodeHelper.googleHelper(config, postnr, result.splitResult.vej ); + result.google = true; - if (result.osmVej != null) { - String osmVasket = AddressUtils.vaskVejnavn( result.osmVej ); - gadeident = postnrVeje.get(osmVasket); + if (result.googleVej != null) { + String googleVasket = AddressUtils.vaskVejnavn( result.googleVej ); + gadeident = postnrVeje.get(googleVasket); if (gadeident != null) { helperCache.put(helperSearchKey, gadeident); @@ -115,6 +125,8 @@ } } + + if (gadeident == null) { result.status = Status.ERROR_UNKNOWN_STREETNAME; return result; @@ -336,6 +348,17 @@ } + private String getbestLevenshteinDistance(String vasketVejnavn, Map postnrVeje) { + for(String vej : postnrVeje.keySet()) { + if ( StringUtils.getLevenshteinDistance(vasketVejnavn, vej) == 1) { + System.out.println("Levenstein: " + vasketVejnavn + "->" + vej); + return vej; + } + } + + return null; + } + private String calculateExtendedDaoRoute(ExtendedBean eb, Address orgAddress, Address targetAddress) { // /////////////////////////////////////////////////////////////////// @@ -414,6 +437,13 @@ aliasSet.add(vejnavn.replace("dr.", "dronningens") ); aliasSet.add(vejnavn.replace("dr ", "dronningens") ); + aliasSet.add(vejnavn.replace("dronning", "dr") ); + aliasSet.add(vejnavn.replace("dr.", "dronning") ); + aliasSet.add(vejnavn.replace("dr ", "dronning") ); + + aliasSet.add(vejnavn.replace("kng", "kongen") ); + aliasSet.add(vejnavn.replace("kongen", "kng") ); + aliasSet.add(vejnavn.replace("kvt", "kvarter") ); aliasSet.add(vejnavn.replace("kvarter", "kvt") ); @@ -449,6 +479,7 @@ //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("alle", "all") ); aliasSet.add(vejnavn.replace("allé", "all") );