216 |
Address addr = litraList.get( result.splitResult.litra ); |
Address addr = litraList.get( result.splitResult.litra ); |
217 |
|
|
218 |
if (addr == null) { //litra ikke fundet |
if (addr == null) { //litra ikke fundet |
219 |
if (config.nearestLitra == true) { |
if (config.nearestLitra == true || naermesteHusnr == true) { |
220 |
result.nearestLitra = true; |
result.nearestLitra = true; |
221 |
addr = litraList.values().iterator().next(); |
addr = litraList.values().iterator().next(); |
222 |
} else { |
} else { |
265 |
} |
} |
266 |
|
|
267 |
if (gadeident == null) { |
if (gadeident == null) { |
268 |
String vej = levenshteinHelper.proposeStreetName(request, result); |
String vej = metaphoneHelper.proposeStreetName(request, result); |
269 |
if (vej != null) { |
if (vej != null) { |
270 |
gadeident = request.streetNames.get(vej); |
gadeident = request.streetNames.get(vej); |
271 |
} |
} |
319 |
|
|
320 |
/* Mapper mellem db Row ID og adresse noden */ |
/* Mapper mellem db Row ID og adresse noden */ |
321 |
Map<Integer,Address> idAddressMap = new HashMap<Integer,Address>( alleAdresser.size() ); |
Map<Integer,Address> idAddressMap = new HashMap<Integer,Address>( alleAdresser.size() ); |
322 |
DeduplicateHelper<String> aliasHelper = new DeduplicateHelper<String>(); |
DeduplicateHelper<String> aliasHelper = new DeduplicateHelper<String>(400000); // Indeholder pt 379664 entries |
323 |
|
|
324 |
|
DeduplicateHelper<Short> shortHelper = new DeduplicateHelper<Short>(); |
325 |
|
DeduplicateHelper<Integer> intHelper = new DeduplicateHelper<Integer>(); |
326 |
|
|
327 |
|
|
328 |
for (Address a : alleAdresser) { |
for (Address a : alleAdresser) { |
329 |
idAddressMap.put(a.id, a); |
idAddressMap.put(a.id, a); |
330 |
|
|
331 |
Map<String,Integer> postnrVeje = searchPostnrVejnavnGadeid.get(a.postnr); |
Short postnr = shortHelper.getInstance(a.postnr); |
332 |
|
|
333 |
|
Map<String,Integer> postnrVeje = searchPostnrVejnavnGadeid.get(postnr); |
334 |
|
|
335 |
if (postnrVeje == null) { |
if (postnrVeje == null) { |
336 |
postnrVeje = new ConcurrentHashMap<String,Integer>(); |
postnrVeje = new HashMap<String,Integer>(10240); //lige nu indeholder den største 9500 entries |
337 |
searchPostnrVejnavnGadeid.put(a.postnr, postnrVeje); |
searchPostnrVejnavnGadeid.put(postnr, postnrVeje); |
338 |
} |
} |
339 |
|
|
340 |
|
|
343 |
if (gadeident == null) { |
if (gadeident == null) { |
344 |
//postnrVeje.put(vasketVejnavn, a.gadeid); |
//postnrVeje.put(vasketVejnavn, a.gadeid); |
345 |
|
|
346 |
gadeident = a.gadeid; |
gadeident = intHelper.getInstance( a.gadeid ); |
347 |
|
|
348 |
Set<String> aliaser = findVejAliaser(a.vejnavn); |
Set<String> aliaser = findVejAliaser(a.vejnavn); |
349 |
for(String alias : aliaser) { |
for(String alias : aliaser) { |
351 |
vasketAlias = aliasHelper.getInstance(vasketAlias); |
vasketAlias = aliasHelper.getInstance(vasketAlias); |
352 |
|
|
353 |
postnrVeje.put(vasketAlias, gadeident); |
postnrVeje.put(vasketAlias, gadeident); |
354 |
} |
} |
355 |
|
|
356 |
} |
} |
357 |
|
|
358 |
|
|
359 |
Map<Short, Map<String,Address>> gade = searchGadeidentAdresser.get(gadeident); |
Map<Short, Map<String,Address>> gade = searchGadeidentAdresser.get(gadeident); |
360 |
if (gade == null) { |
if (gade == null) { |
361 |
gade = new TreeMap<Short, Map<String,Address>>(); |
gade = new TreeMap<Short, Map<String,Address>>(); |
370 |
|
|
371 |
litraList.put(a.husnrbogstav, a); |
litraList.put(a.husnrbogstav, a); |
372 |
} |
} |
373 |
|
|
374 |
|
|
375 |
//////////////////////////////////////////////////////////////////////////////////////// |
//////////////////////////////////////////////////////////////////////////////////////// |
376 |
long start2 = System.currentTimeMillis(); |
long start2 = System.currentTimeMillis(); |
377 |
System.out.println("Build, stage1 elapsed: " + (start2-start1) ); |
System.out.println("Build, stage1 elapsed: " + (start2-start1) ); |
806 |
|
|
807 |
// Opbyg æøå varianter over alle fundne aliaser |
// Opbyg æøå varianter over alle fundne aliaser |
808 |
|
|
809 |
@SuppressWarnings("unchecked") |
HashSet<String> variants = new HashSet<String>( aliasSet ); |
|
HashSet<String> variants = (HashSet<String>) aliasSet.clone(); |
|
810 |
|
|
811 |
for (String vVejnavn : variants) { |
for (String vVejnavn : variants) { |
812 |
// danske tegn 1 |
// danske tegn 1 |
826 |
aliasSet.add( vVejnavn.replace("oe", "ø").replace("aa", "å") ); |
aliasSet.add( vVejnavn.replace("oe", "ø").replace("aa", "å") ); |
827 |
|
|
828 |
//danske tegn 3 |
//danske tegn 3 |
829 |
aliasSet.add( vejnavn.replace("æ", "ae").replace("ø", "oe").replace("å", "aa") ); |
aliasSet.add( vVejnavn.replace("æ", "ae").replace("ø", "oe").replace("å", "aa") ); |
830 |
aliasSet.add( vejnavn.replace("ae", "æ").replace("oe", "ø").replace("aa", "å") ); |
aliasSet.add( vVejnavn.replace("ae", "æ").replace("oe", "ø").replace("aa", "å") ); |
831 |
|
|
832 |
|
|
833 |
//udenlandsketegn |
//udenlandsketegn |
834 |
aliasSet.add(vejnavn.replace("u", "ü") ); |
aliasSet.add( vVejnavn.replace("u", "ü") ); |
835 |
aliasSet.add(vejnavn.replace("ü", "u") ); |
aliasSet.add( vVejnavn.replace("ü", "u") ); |
836 |
|
|
837 |
aliasSet.add(vejnavn.replace("ä", "æ") ); |
aliasSet.add( vVejnavn.replace("ä", "æ") ); |
838 |
aliasSet.add(vejnavn.replace("æ", "ä") ); |
aliasSet.add( vVejnavn.replace("æ", "ä") ); |
839 |
|
|
840 |
aliasSet.add(vejnavn.replace("ö", "ø") ); |
aliasSet.add( vVejnavn.replace("ö", "ø") ); |
841 |
aliasSet.add(vejnavn.replace("ø", "ö") ); |
aliasSet.add( vVejnavn.replace("ø", "ö") ); |
842 |
} |
} |
843 |
|
|
844 |
return aliasSet; |
return aliasSet; |