Преглед на файлове

rule_0和行政区划异常数据特殊处理逻辑。

DESKTOP-6LTVLN7\Liumouren преди 1 месец
родител
ревизия
76800fa682
променени са 1 файла, в които са добавени 20 реда и са изтрити 15 реда
  1. 20 15
      src/main/java/com/skyversation/poiaddr/service/impl/YyskAddressStandardizationServiceImpl.java

+ 20 - 15
src/main/java/com/skyversation/poiaddr/service/impl/YyskAddressStandardizationServiceImpl.java

@@ -376,28 +376,33 @@ public class YyskAddressStandardizationServiceImpl {
             futures.add(executorService.submit(() -> {
                 System.out.print(finalI + ">");
                 List<String> addrList = new ArrayList<>();
-                String[] addr = AddressMatcher.matchProvinceAndCity(item.getAddress());
-                if (addr != null && !addr[0].contains("上海")) {
 //                  匹配全国省名
-                    item.setProvinces(addr[0]);
 //                  遍历全国城市名称匹配搜索地址市名
-                    item.setMarket(addr[1]);
+                String[] addr = AddressMatcher.matchProvinceAndCity(item.getAddress());
+                boolean ifSearch = true;
+                if (addr != null && !addr[0].contains("上海")) {
+                    addrList.add(item.getAddress());
                     item.setMatchLevel("rule_0");
+//                  如果查询地址不是完全包含省和市的关键字且属于rule_0,那么就需要重新跑一遍
+                    if ((!addr[0].isEmpty() && item.getAddress().contains(addr[0])) || (!addr[1].isEmpty() && item.getAddress().contains(addr[1]))) {
+                        item.setProvinces(addr[0]);
+                        item.setMarket(addr[1]);
+                        ifSearch = false;
+                    }
                 } else {
                     addrList.add(item.getAddress());
-                    String[] strs = AddressTools.parseAddressJZ(item.getAddress());
-                    if (strs != null) {
-                        item.setProvinces(strs[0] == null ? "" : strs[0]);
-                        item.setMarket(strs[0] == null ? "" : strs[0]);
-                        item.setDistinguish(strs[1] == null ? "" : strs[1]);
-                        item.setStreetTown(strs[2] == null ? "" : strs[2]);
-                    }
+                    ifSearch = false;
+//                    String[] strs = AddressTools.parseAddressJZ(item.getAddress());
+//                    if (strs != null) {
+//                        item.setProvinces(strs[0] == null ? "" : strs[0]);
+//                        item.setMarket(strs[0] == null ? "" : strs[0]);
+//                        item.setDistinguish(strs[1] == null ? "" : strs[1]);
+//                        item.setStreetTown(strs[2] == null ? "" : strs[2]);
+//                    }
                 }
-                String dbMatchLevel = item.getMatchLevel();
-                boolean ifSearch = true;
                 try {
-                    if (dbMatchLevel.contains("异常") || dbMatchLevel.contains("rule_") || Float.parseFloat(dbMatchLevel) > 1.5) {
-                        ifSearch = false;
+                    if (item.getMatchLevel().contains("异常") || item.getDistinguish() == null || item.getDistinguish().isEmpty() || item.getStreetTown() == null || item.getStreetTown().isEmpty()) {
+                        ifSearch = true;
                     }
                 } catch (Exception e) {
                     e.printStackTrace();