/[projects]/dao/DaoAdresseService/src/main/java/dk/daoas/daoadresseservice/AddressSearch.java
ViewVC logotype

Diff of /dao/DaoAdresseService/src/main/java/dk/daoas/daoadresseservice/AddressSearch.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2549 by torben, Wed May 20 09:10:34 2015 UTC revision 2556 by torben, Fri May 22 11:22:56 2015 UTC
# Line 95  public class AddressSearch { Line 95  public class AddressSearch {
95                          return result;                          return result;
96                  }                  }
97                                    
98                  request.vasketVejnavn = AddressUtils.vaskVejnavn( request.vejnavn );                  result.vasketVejnavn = AddressUtils.vaskVejnavn( request.vejnavn );
99                                    
100    
101                  if (request.vasketVejnavn.indexOf("pakkebo") > -1                  if (result.vasketVejnavn.indexOf("pakkebo") > -1
102                                  || request.vasketVejnavn.indexOf("pakkepost") > -1                                  || result.vasketVejnavn.indexOf("pakkepost") > -1
103                                  || request.vasketVejnavn.indexOf("postbo") > -1   // postbox/postboks                                  || result.vasketVejnavn.indexOf("postbo") > -1   // postbox/postboks
104                                  || request.vasketVejnavn.indexOf("døgnpost") > -1                                  || result.vasketVejnavn.indexOf("døgnpost") > -1
105                                  || request.vasketVejnavn.indexOf("døgnbo") > -1 // døgnbox // døgnboks                                  || result.vasketVejnavn.indexOf("døgnbo") > -1 // døgnbox // døgnboks
106                                  || request.vasketVejnavn.equals("id")                                  || result.vasketVejnavn.equals("id")
107                                  ) {                                  ) {
108                          result.status = Status.ERROR_POSTBOX;                          result.status = Status.ERROR_POSTBOX;
109                          return result;                                            return result;                  
110                  }                  }
111                                    
112                  Integer gadeident =  request.streetNames.get(request.vasketVejnavn);                  // LookupStreetname er en indkapsling af alm + levenstein + google + osm
113                    Integer gadeident = lookupStretname(request, result, helperSearchKey);
114                                    
115                                    
116                  if ( gadeident == null) {                  /*
117                          helperSearchKey = "" + request.postnr + "/" + request.vasketVejnavn;                   * Hvis der ikke er direkte hits, prøver vi at skære op til 3 ord vejnavn
118                          gadeident = helperCache.get(helperSearchKey);                   *
119                  }                   *Denne sektion er MEGET experimental da den øger antallet af kald til google/OSM væsentligt
                   
120                  if (gadeident == null) {                  if (gadeident == null) {
121                          String vej = levenshteinHelper.proposeStreetName(request, result);                          String vejnavnParts[] = request.vejnavn.split(" ");
122                          if (vej != null) {                          
123                                  gadeident =  request.streetNames.get(vej);                          for (int i=1; i<=3 && i<vejnavnParts.length; i++) {
124                          }                                  String subVejnavn = DaoUtils.joinHelper(vejnavnParts, i);
125                  }                                  
126                                                    request.vejnavn = subVejnavn;
127                                                    result.vasketVejnavn = AddressUtils.vaskVejnavn( request.vejnavn );
128                  // Brug OpenStreetMap før vi prøver google                                  
129                  // For google har en request limit, det har OSM ikke!                                  gadeident = lookupStretname(request, result, helperSearchKey);
130                  if ( gadeident == null) {                                  
131                          String vej = osmHelper.proposeStreetName(request, result);                                                //hvis vi fandt vejen ud fra substrengen
132                          gadeident = helperWrapper(vej, request.streetNames, helperSearchKey);                                  if (gadeident != null) {
133                  }                                          break;
134                                                    }                      
135                  if ( gadeident == null) {                                  
136                          String vej = googleHelper.proposeStreetName(request, result);                                            //hvis vi ikke fandt kopierer vi vejnavn fra split igen
137                          gadeident = helperWrapper(vej, request.streetNames, helperSearchKey);                                  request.vejnavn = result.splitResult.vej;
138                  }                                  result.vasketVejnavn = AddressUtils.vaskVejnavn( request.vejnavn );
139                            }                      
140                    }*/
141                                    
142    
143                                    
# Line 184  public class AddressSearch { Line 186  public class AddressSearch {
186    
187                  return result;                  return result;
188          }          }
189    
190    
191            private Integer lookupStretname(SearchRequest request, SearchResult result, String helperSearchKey) {
192                    Integer gadeident =  request.streetNames.get(result.vasketVejnavn);
193                    
194                    
195                    if ( gadeident == null) {
196                            helperSearchKey = "" + request.postnr + "/" + result.vasketVejnavn;
197                            gadeident = helperCache.get(helperSearchKey);
198                    }
199                    
200                    if (gadeident == null) {
201                            String vej = levenshteinHelper.proposeStreetName(request, result);
202                            if (vej != null) {
203                                    gadeident =  request.streetNames.get(vej);
204                            }
205                    }
206                    
207                    
208                    // Brug OpenStreetMap før vi prøver google
209                    // For google har en request limit, det har OSM ikke!
210                    if ( gadeident == null) {
211                            String vej = osmHelper.proposeStreetName(request, result);              
212                            gadeident = helperWrapper(vej, request.streetNames, helperSearchKey);
213                    }
214                    
215                    if ( gadeident == null) {
216                            String vej = googleHelper.proposeStreetName(request, result);          
217                            gadeident = helperWrapper(vej, request.streetNames, helperSearchKey);
218                    }
219                    return gadeident;
220            }
221                    
222          private Integer helperWrapper(String vej, Map<String,Integer> postnrVeje, String helperSearchKey) {          private Integer helperWrapper(String vej, Map<String,Integer> postnrVeje, String helperSearchKey) {
223                  if (vej == null)                  if (vej == null)
# Line 515  public class AddressSearch { Line 549  public class AddressSearch {
549                  vejnavn = vejnavn.toLowerCase();                  vejnavn = vejnavn.toLowerCase();
550                  HashSet<String> aliasSet = new HashSet<String>();                  HashSet<String> aliasSet = new HashSet<String>();
551                  aliasSet.add(vejnavn);                  aliasSet.add(vejnavn);
552                                                    
                 aliasSet.add(vejnavn.replace("u", "ü") );  
                 aliasSet.add(vejnavn.replace("ü", "u") );  
                   
553                  aliasSet.add(vejnavn.replace("alle", "allé") );                  aliasSet.add(vejnavn.replace("alle", "allé") );
554                  aliasSet.add(vejnavn.replace("allé", "alle") );                                  aliasSet.add(vejnavn.replace("allé", "alle") );                
555                                    
# Line 559  public class AddressSearch { Line 590  public class AddressSearch {
590                  aliasSet.add(vejnavn.replace("nordre", "ndr") );                  aliasSet.add(vejnavn.replace("nordre", "ndr") );
591                  aliasSet.add(vejnavn.replace("ndr", "nordre") );                  aliasSet.add(vejnavn.replace("ndr", "nordre") );
592                                    
593                    
594                    aliasSet.add(vejnavn.replace("vestre", "vester") );
595                    aliasSet.add(vejnavn.replace("vester", "vestre") );
596                    
597                    aliasSet.add(vejnavn.replace("søndre", "sønder") );
598                    aliasSet.add(vejnavn.replace("sønder", "søndre") );
599                    
600                    aliasSet.add(vejnavn.replace("østre", "øster") );
601                    aliasSet.add(vejnavn.replace("øster", "østre") );
602                    
603                  aliasSet.add(vejnavn.replace("borgmester", "borgm") );                  aliasSet.add(vejnavn.replace("borgmester", "borgm") );
604                  aliasSet.add(vejnavn.replace("borgm", "borgmester") );                  aliasSet.add(vejnavn.replace("borgm", "borgmester") );
605                                    
# Line 666  public class AddressSearch { Line 707  public class AddressSearch {
707                          //danske tegn 3                          //danske tegn 3
708                          aliasSet.add( vejnavn.replace("æ", "ae").replace("ø", "oe").replace("å", "aa") );                          aliasSet.add( vejnavn.replace("æ", "ae").replace("ø", "oe").replace("å", "aa") );
709                          aliasSet.add( vejnavn.replace("ae", "æ").replace("oe", "ø").replace("aa", "å") );                          aliasSet.add( vejnavn.replace("ae", "æ").replace("oe", "ø").replace("aa", "å") );
710                            
711                            
712                            //udenlandsketegn
713                            aliasSet.add(vejnavn.replace("u", "ü") );
714                            aliasSet.add(vejnavn.replace("ü", "u") );
715                            
716                            aliasSet.add(vejnavn.replace("ä", "æ") );
717                            aliasSet.add(vejnavn.replace("æ", "ä") );
718                            
719                            aliasSet.add(vejnavn.replace("ö", "ø") );
720                            aliasSet.add(vejnavn.replace("ø", "ö") );
721                  }                  }
722                                    
723                  return aliasSet;                  return aliasSet;

Legend:
Removed from v.2549  
changed lines
  Added in v.2556

  ViewVC Help
Powered by ViewVC 1.1.20