Kaynağa Gözat

优化分词器

ximinghao 1 ay önce
ebeveyn
işleme
af7f74d2b1

+ 9 - 1
src/main/java/com/skyversation/poiaddr/util/address_spliter/ShanghaiAddressSplitUtil.java

@@ -176,6 +176,12 @@ public class ShanghaiAddressSplitUtil {
                 if (key > 0 && name.equals("江镇") && targetString.charAt(key - 1) == '松') {
                     iterator.remove();
                 }
+                if (key > 0 && name.equals("镇江")) {
+                    String sub1 = targetString.substring(key+2);
+                    if (LEVEL_3_SUFFIX_PATTERN.matcher(sub1).matches()) {
+                        iterator.remove();
+                    }
+                }
             }
             communityMap.putAll(results);
             //仅有一个选择时当成一选
@@ -309,8 +315,10 @@ public class ShanghaiAddressSplitUtil {
         //检查是否在外省,未找到省市或者在省市中找到上海,或者找到上海的区都算作省内
         Map<Integer, String> districtContainResult = contain(beautyAddress, DISTRICT_TO_COMMUNITY_MAP.keySet(), 0);
         int  disIndex= washResult(beautyAddress, districtContainResult,LEVEL_1_SUFFIX_PATTERN);
+        Map<Integer, String> streetContainResult = contain(beautyAddress, STREET_TO_COMMUNITY_MAP.keySet(), 0);
+        int  streetIndex= washResult(beautyAddress, districtContainResult,LEVEL_2_SUFFIX_PATTERN);
         if (!((result[0].isEmpty()|| result[0].equals("上海市")) && (result[1].isEmpty()  || result[1].equals("上海市"))||
-                !districtContainResult.isEmpty())) {
+                !districtContainResult.isEmpty()||!streetContainResult.isEmpty())) {
             splitAddress.setStatus(2);
             splitAddress.setAddr(result[3]);
             return splitAddress;