Selaa lähdekoodia

修复V3地址匹配逻辑BUG。判断方向的问题。优化初始化缓存sql(数据库已经去重并添加字段标志)

DESKTOP-6LTVLN7\Liumouren 1 viikko sitten
vanhempi
commit
1395a549d5

+ 0 - 1
src/main/java/com/skyversation/poiaddr/addquery/TransfromDataTool.java

@@ -21,7 +21,6 @@ public class TransfromDataTool {
                 return result;
             }
             JSONArray resultArray = AddressTools.getInstance().findBestMatch2(searchAddress, array, "sourceaddress");
-
             for(int i = 0; i < resultArray.size(); i ++){
                 JSONObject jsonObject = resultArray.getJSONObject(i);
                 if (jsonObject != null && jsonObject.containsKey("总分") && jsonObject.get("总分") != null && !jsonObject.getString("总分").isEmpty()) {

+ 2 - 3
src/main/java/com/skyversation/poiaddr/controller/CorporateLibraryController.java

@@ -63,7 +63,8 @@ public class CorporateLibraryController {
             return MessageManage.getInstance().getResultContent(Constant.PARAM_ERROR, "参数错误", "参数错误");
         }
 //      数据库查询
-        List<YyskDmdzAddressStandardization> list = AreaService.getInstance().getAddressPoiOnlyDB(address);
+        SplitAddress splitAddress = ShanghaiAddressSplitUtil.splitBestAddress(address);
+        List<YyskDmdzAddressStandardization> list = AreaService.getInstance().getAddressPoiOnlyDB(splitAddress.getAddr());
         AddressResult addressResult = null;
         if (list == null || list.size() < 1) {
 //          写入回流表
@@ -72,7 +73,6 @@ public class CorporateLibraryController {
         } else {
             JSONArray pois = new JSONArray();
             pois.addAll(list);
-            SplitAddress splitAddress = ShanghaiAddressSplitUtil.splitBestAddress(address);
 //          打分并返回最优结果
             addressResult = new TransfromDataTool().dbResultToResult(splitAddress, address, pois);
             if (addressResult != null && addressResult.getData() != null && addressResult.getData().size() > 0) {
@@ -88,7 +88,6 @@ public class CorporateLibraryController {
     @RequestMapping(value = "/searchByNameV3")
     public String searchByNameV3(HttpServletRequest request) {
         String address = request.getParameter("address");
-
         if (!StringUtils.hasText(address)) {
             return MessageManage.getInstance().getResultContent(Constant.PARAM_ERROR, "参数错误", "参数错误");
         }

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

@@ -471,7 +471,7 @@ public class AreaService {
                 dmdzList = ScheduledTasks.allDmdzData.get(splitAddress.getSearchAddr());
             } else {
                 for (String key : ScheduledTasks.allDmdzData.keySet()) {
-                    if (splitAddress.getSearchAddr().contains(key)) {
+                    if (key.contains(splitAddress.getSearchAddr())) {
                         dmdzList = ScheduledTasks.allDmdzData.get(key);
                     }
                 }
@@ -496,6 +496,12 @@ public class AreaService {
 
     public List<YyskDmdzAddressStandardization> getAddressPoiOnlyDB(String addr) {
 //      TODO 数据库查询逻辑调整为内存处理的方式
+        if (addr.contains("号")) {
+            addr = addr.substring(0, addr.indexOf("号"));
+        }
+        if (addr.contains("弄")) {
+            addr = addr.substring(0, addr.indexOf("弄"));
+        }
         List<YyskDmdzAddressStandardization> returnDatas = new ArrayList<>();
         if (ScheduledTasks.allDmdzData.containsKey(addr)) {
             returnDatas = ScheduledTasks.allDmdzData.get(addr);
@@ -505,15 +511,6 @@ public class AreaService {
                     returnDatas = ScheduledTasks.allDmdzData.get(key);
                 }
             }
-            if (returnDatas == null || returnDatas.size() == 0) {
-                SplitAddress splitAddress = ShanghaiAddressSplitUtil.splitBestAddress(addr);
-                if (splitAddress.getAddr() != null && splitAddress.getAddr().length() > 0 && StringUtils.hasText(splitAddress.getAddr()))
-                    for (String key : ScheduledTasks.allDmdzData.keySet()) {
-                        if (key.contains(splitAddress.getAddr())) {
-                            returnDatas = ScheduledTasks.allDmdzData.get(key);
-                        }
-                    }
-            }
         }
         return returnDatas;
 //      TODO 数据库查询的方式

+ 1 - 1
src/main/java/com/skyversation/poiaddr/service/impl/YyszAddressRepository.java

@@ -33,6 +33,6 @@ public interface YyszAddressRepository extends JpaRepository<YyskDmdzAddressStan
             "LIMIT 20;", nativeQuery = true)
     List<YyskDmdzAddressStandardization> getNearbySearch(@Param("lat") double lat, @Param("lon") double lon, @Param("radius") int radius);
 
-    @Query(value = "SELECT * FROM yysk_dmdz_address_standardization where oid >:oid order by oid limit :pageSize", nativeQuery = true)
+    @Query(value = "SELECT * FROM yysk_dmdz_address_standardization where `type` = 'zl_v4' and oid >:oid order by oid limit :pageSize", nativeQuery = true)
     List<YyskDmdzAddressStandardization> getAllByOidPage(@Param("oid") int oid,@Param("pageSize") int pageSize);
 }

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

@@ -466,7 +466,8 @@ public class ShanghaiAddressSplitUtil {
     }
     public static void main(String[] args) throws Exception {
         new ShanghaiAddressSplitUtil().init();
-        System.out.println(splitBestAddress("湖南省新照县陈家坊镇双江村9组8号"));
+        System.out.println(splitBestAddress("小昆山镇周家浜村骨介353号"));
+        System.out.println(splitBestAddress("小昆山镇周家浜村骨介353号"));
 //        System.out.println(splitBestAddress("新胜路88、98号3号厂房"));
 //        System.out.println(splitBestAddress("新胜路88-98号3号厂房"));
 //        System.out.println(splitBestAddress("新胜路、98号3号厂房"));