Przeglądaj źródła

楼栋号、室号匹配升级

DESKTOP-6LTVLN7\Liumouren 5 dni temu
rodzic
commit
38a31ffb13

+ 3 - 12
src/main/java/com/skyversation/poiaddr/addquery/TransfromDataTool.java

@@ -15,23 +15,14 @@ public class TransfromDataTool {
 
     public static void main(String[] args) {
 //      搜索地址
-        String searchAddress = "四村村701号102室";
+        String searchAddress = "王家浜路130号101室";
         System.out.println("》》搜索地址:" + searchAddress);
         System.out.println();
 //      返回的参考地址列表
         Set<String> arrayAddress = new HashSet<>();
-        arrayAddress.add("上海市青浦区盈浦街道淀湖路88号");
-        arrayAddress.add("上海市松江区叶榭镇五村村701号102室");
+        arrayAddress.add("旗杆村平桥王家浜路658号");
+        arrayAddress.add("王家浜路与光星路交叉口东200米");
         arrayAddress.add("上海市松江区叶榭镇四村村701号102室");
-        arrayAddress.add("上海市松江区叶榭镇四村村404号");
-        arrayAddress.add("上海市松江区叶榭镇四村村685号");
-        arrayAddress.add("四村村701号102室");
-        arrayAddress.add("叶榭镇四村村684号");
-        arrayAddress.add("四村村684号");
-        arrayAddress.add("四村村701号121室");
-        arrayAddress.add("四村村701号101室");
-        arrayAddress.add("淀湖路699弄");
-        arrayAddress.add("四村村");
         System.out.println("》》返回参考地址列表:" + arrayAddress);
         System.out.println();
 //      新建JSONArray对象

+ 16 - 8
src/main/java/com/skyversation/poiaddr/util/AddrSplitLmrMap.java

@@ -266,7 +266,7 @@ public class AddrSplitLmrMap {
         return false;
     }
 
-    public static String deleteDisStr(String addressStr){
+    public static String deleteDisStr(String addressStr) {
         Matcher disMatcher = Pattern.compile("(新城区|工业区|委员会|开发区|科技园区|村委会)").matcher(addressStr);
         if (disMatcher.find()) {
             addressStr = addressStr.substring(disMatcher.end());
@@ -305,9 +305,6 @@ public class AddrSplitLmrMap {
                 } else {
                     returnMap.put("楼栋号", nongTagMatcher.group(1));
                 }
-            } else {
-//                不存在\d+(?:-+\d)?号
-                returnMap.put("楼栋号", null);
             }
         } else {
 //          不存在弄
@@ -324,28 +321,39 @@ public class AddrSplitLmrMap {
                         returnMap.put("楼栋号", nonghaoList[1]);
                     } else {
                         returnMap.put("弄号", nonghao);
-                        returnMap.put("楼栋号", null);
                     }
                 } else {
                     returnMap.put("路名", remaining.substring(0, nongTagMatcher.start()));
                     returnMap.put("弄号", nongTagMatcher.group(1));
-                    returnMap.put("楼栋号", null);
                 }
             } else {
 //                不存在\d+(?:-+\d)?号
                 returnMap.put("路名", null);
                 returnMap.put("弄号", null);
+            }
+        }
+
+//      添加解析楼栋号
+        Matcher homeMatcher = Pattern.compile("(\\d+[幢|栋])").matcher(remaining);
+        if (homeMatcher.find()) {
+            if (returnMap.containsKey("楼栋号")) {
+                returnMap.put("楼栋号", returnMap.get("楼栋号") + homeMatcher.group(1));
+            } else {
+                returnMap.put("楼栋号", homeMatcher.group(1));
+            }
+        } else {
+            if (!returnMap.containsKey("楼栋号")) {
                 returnMap.put("楼栋号", null);
             }
         }
 
         // 8. 解析房间号
-        Matcher roomMatcher = Pattern.compile("(\\d{3,4}(?:[室号房])?$)").matcher(remaining);
+        Matcher roomMatcher = Pattern.compile("([A-Za-z\\d]+(?:[室号房])?$)").matcher(remaining);
         if (roomMatcher.find()) {
             String roomNumber = roomMatcher.group(1);
             returnMap.put("室号", roomNumber);
         } else {
-            Matcher roomMatcher2 = Pattern.compile("(\\d{3,4}[室号房])").matcher(remaining);
+            Matcher roomMatcher2 = Pattern.compile("([A-Za-z\\d]+[室号房])").matcher(remaining);
             if (roomMatcher2.find()) {
                 returnMap.put("室号", roomMatcher2.group(1));
             } else {