DESKTOP-6LTVLN7\Liumouren 1 viikko sitten
vanhempi
commit
25bb5edd91

+ 26 - 26
src/main/java/com/skyversation/poiaddr/service/AreaService.java

@@ -187,12 +187,19 @@ public class AreaService {
     }
 
     public void putAllDmdzData(String addr, YyskDmdzAddressStandardization item) {
+        if (addr.contains("号")) {
+            addr = addr.substring(0, addr.indexOf("号"));
+        }
+        if (addr.contains("弄")) {
+            addr = addr.substring(0, addr.indexOf("弄"));
+        }
+        addr = addr.replaceAll("(?<=[^\\d])\\d+$", "");
         if (StringUtils.hasText(addr)) {
             if (!ScheduledTasks.allDmdzData.containsKey(addr)) {
                 List<YyskDmdzAddressStandardization> datas = new ArrayList<>();
                 datas.add(item);
                 ScheduledTasks.allDmdzData.put(addr, datas);
-            } else if (ScheduledTasks.allDmdzData.get(addr).size() < 20) {
+            } else if (ScheduledTasks.allDmdzData.get(addr).size() < 100) {
                 ScheduledTasks.allDmdzData.get(addr).add(item);
             }
         }
@@ -353,31 +360,22 @@ public class AreaService {
 
     public List<YyskDmdzAddressStandardization> getAddressPoiOnlyDB(SplitAddress splitAddress) {
 //      TODO 数据库查询逻辑调整为内存处理的方式
-        String addr = splitAddress.getSearchAddr();
+        String addr = splitAddress.getAddr();
+        String addr2 = addr + "";
+        if (addr2.contains("号")) {
+            addr2 = addr2.substring(0, addr2.indexOf("号"));
+        }
+        if (addr2.contains("弄")) {
+            addr2 = addr2.substring(0, addr2.indexOf("弄"));
+        }
+        addr2 = addr2.replaceAll("(?<=[^\\d])\\d+$", "");
         List<YyskDmdzAddressStandardization> returnDatas = new ArrayList<>();
-        for (String key : ScheduledTasks.allDmdzData.keySet()) {
-            if (key != null) {
-                if (addr != null && returnDatas.size() < 20) {
-                    if (key.contains(addr)) {
-                        returnDatas.addAll(ScheduledTasks.allDmdzData.get(key));
-                    } else {
-                        String addr2 = addr + "";
-                        if (addr2.contains("号")) {
-                            addr2 = addr2.substring(0, addr2.indexOf("号"));
-                        }
-                        if (addr2.contains("弄")) {
-                            addr2 = addr2.substring(0, addr2.indexOf("弄"));
-                        }
-                        if (key.contains(addr2)) {
-                            returnDatas.addAll(ScheduledTasks.allDmdzData.get(key));
-                        } else {
-                            addr2 = addr2.replaceAll("(?<=[^\\d])\\d+$", "");
-                            if (key.contains(addr2)) {
-                                returnDatas.addAll(ScheduledTasks.allDmdzData.get(key));
-                            }
-                        }
-                    }
-                } else {
+        if (ScheduledTasks.allDmdzData.containsKey(addr2)) {
+            returnDatas = ScheduledTasks.allDmdzData.get(addr2);
+        } else {
+            for (String key : ScheduledTasks.allDmdzData.keySet()) {
+                if (key != null && addr != null && (key.contains(addr2) || addr.contains(key))) {
+                    returnDatas.addAll(ScheduledTasks.allDmdzData.get(key));
                     break;
                 }
             }
@@ -390,8 +388,10 @@ public class AreaService {
                     returnDatas2.add(item);
                 }
             }
+            return returnDatas2;
+        } else {
+            return returnDatas;
         }
-        return returnDatas2;
     }
 
     public List<TAddressCallback> getCallbackDataByTag(Integer tag) {

+ 1 - 1
src/main/java/com/skyversation/poiaddr/util/AddressTools.java

@@ -964,7 +964,7 @@ public class AddressTools {
 
                 double totalScore = score1 + score2 + score3;
 
-                if (score2 == 1 && totalScore > maxTotalScore) {
+                if (totalScore > maxTotalScore) {
                     maxTotalScore = totalScore;
                     obj.put("计分1", score1);
                     obj.put("计分2", score2);