gagamel 5 rokov pred
rodič
commit
f816a6c249
27 zmenil súbory, kde vykonal 2109 pridanie a 0 odobranie
  1. BIN
      산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210409.zip
  2. BIN
      산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210409/AutoSearch.jar
  3. 543 0
      산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210409/AutoSearch.java
  4. BIN
      산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210409/PlanSearch.jar
  5. 499 0
      산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210409/PlanSearch.java
  6. BIN
      산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210409/m4_client.jar
  7. BIN
      산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210409/m4_common.jar
  8. BIN
      산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210409/m4_util.jar
  9. BIN
      산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210409/검색API 정의서_v0.4.0_20210409.docx
  10. BIN
      산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210412.zip
  11. 556 0
      산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210412/AutoSearch.java
  12. 511 0
      산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210412/PlanSearch.java
  13. BIN
      산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210412/autoPlanSearch.jar
  14. BIN
      산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210412/m4_client.jar
  15. BIN
      산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210412/m4_common.jar
  16. BIN
      산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210412/m4_util.jar
  17. BIN
      산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210412/검색API 정의서_v0.4.1_20210412.docx
  18. BIN
      산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210416.zip
  19. BIN
      산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210416/Search.jar
  20. BIN
      산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210416/json_simple-1.1.jar
  21. BIN
      산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210416/m4_client.jar
  22. BIN
      산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210416/m4_common.jar
  23. BIN
      산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210416/m4_util.jar
  24. BIN
      산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210416/검색API 정의서_v0.5.1_20210416.docx
  25. BIN
      산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/210423.zip
  26. BIN
      산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/210423/Istyle.jar
  27. BIN
      산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/210423/아이스타일_검색API_가이드_v.1.0.docx

BIN
산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210409.zip


BIN
산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210409/AutoSearch.jar


+ 543 - 0
산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210409/AutoSearch.java

@@ -0,0 +1,543 @@
+package istyle;
+
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.json.simple.JSONObject;
+
+import com.diquest.ir.client.command.CommandSearchRequest;
+import com.diquest.ir.common.exception.IRException;
+import com.diquest.ir.common.msg.protocol.Protocol;
+import com.diquest.ir.common.msg.protocol.query.SelectSet;
+import com.diquest.ir.common.msg.protocol.query.WhereSet;
+import com.diquest.ir.common.msg.protocol.result.GroupResult;
+import com.diquest.ir.common.msg.protocol.result.Result;
+import com.diquest.ir.common.msg.protocol.result.ResultSet;
+import com.diquest.ir.common.msg.protocol.query.FilterSet;
+import com.diquest.ir.common.msg.protocol.query.GroupBySet;
+import com.diquest.ir.common.msg.protocol.query.OrderBySet;
+import com.diquest.ir.common.msg.protocol.query.Query;
+import com.diquest.ir.common.msg.protocol.query.QueryParser;
+import com.diquest.ir.common.msg.protocol.query.QuerySet;
+
+public class AutoSearch {
+	
+	public static ArrayList<SelectSet> getSelectSet() {
+	
+        ArrayList<SelectSet> selectSetList = new ArrayList<SelectSet>();
+        
+        
+        selectSetList.add(new SelectSet("GOODS_CD"));
+        selectSetList.add(new SelectSet("GOODS_NM",(byte)(Protocol.SelectSet.HIGHLIGHT),200));
+        selectSetList.add(new SelectSet("GOODS_GB"));
+        selectSetList.add(new SelectSet("FOREIGN_BUY_YN"));
+        selectSetList.add(new SelectSet("PARALLEL_IMPORT_YN"));
+        selectSetList.add(new SelectSet("ORDER_MADE_YN"));
+        selectSetList.add(new SelectSet("GOODS_SNM"));
+        selectSetList.add(new SelectSet("BRAND_CD"));
+        selectSetList.add(new SelectSet("ITEMKIND_CD"));
+        selectSetList.add(new SelectSet("FORMAL_GB"));
+        selectSetList.add(new SelectSet("LIST_PRICE"));
+        selectSetList.add(new SelectSet("CURR_PRICE"));
+        selectSetList.add(new SelectSet("SELF_GOODS_YN"));
+        selectSetList.add(new SelectSet("GOODS_STAT"));
+        selectSetList.add(new SelectSet("PNT_PRATE"));
+        selectSetList.add(new SelectSet("PRE_PPNT_USABLE_YN"));
+        selectSetList.add(new SelectSet("PNT_MRATE"));
+        selectSetList.add(new SelectSet("PRE_MPNT_USABLE_YN"));
+        selectSetList.add(new SelectSet("MIN_ORD_QTY"));
+        selectSetList.add(new SelectSet("MAX_ORD_QTY"));
+        selectSetList.add(new SelectSet("DAY_MAX_ORD_QTY"));
+        selectSetList.add(new SelectSet("SEX_GB"));
+        selectSetList.add(new SelectSet("MAIN_COLOR_CD"));
+        selectSetList.add(new SelectSet("SUPPLY_COMP_CD"));
+        selectSetList.add(new SelectSet("SELF_MALL_YN"));
+        selectSetList.add(new SelectSet("AGE_GRP_CD"));
+        selectSetList.add(new SelectSet("SEASON_CD"));
+        selectSetList.add(new SelectSet("GOODS_TYPE"));
+        selectSetList.add(new SelectSet("REG_DT"));
+        selectSetList.add(new SelectSet("BRAND_GROUP_NM"));
+        selectSetList.add(new SelectSet("BRAND_GROUP_NO"));
+        selectSetList.add(new SelectSet("DELV_FEE"));
+        selectSetList.add(new SelectSet("MIN_ORD_AMT"));
+        selectSetList.add(new SelectSet("ORDER_CNT"));
+        selectSetList.add(new SelectSet("REVIEW_CNT"));
+        selectSetList.add(new SelectSet("SIZE_GB"));
+        selectSetList.add(new SelectSet("SIZE_GB_NM"));
+        selectSetList.add(new SelectSet("QUIK_DELV_YN"));
+        selectSetList.add(new SelectSet("COLOR_CD"));
+        selectSetList.add(new SelectSet("SIZES"));
+        selectSetList.add(new SelectSet("CPN_PC_ICON"));
+        selectSetList.add(new SelectSet("CPN_MO_ICON"));
+        selectSetList.add(new SelectSet("CPN_APP_ICON"));
+        selectSetList.add(new SelectSet("FREEGIFT_ICON"));
+        selectSetList.add(new SelectSet("AD_KEYWORD"));
+        selectSetList.add(new SelectSet("VIDEO_GB_M"));
+        selectSetList.add(new SelectSet("VIDEO_VAL_M"));
+        selectSetList.add(new SelectSet("VIDEO_GB_S"));
+        selectSetList.add(new SelectSet("VIDEO_VAL_S"));
+        selectSetList.add(new SelectSet("GOODS_GB_NM"));
+        selectSetList.add(new SelectSet("SEX_NM"));
+        selectSetList.add(new SelectSet("AGE_GRP_NM"));
+        selectSetList.add(new SelectSet("SEASON_NM"));
+     
+        return selectSetList;
+    }
+	
+	public static ArrayList<WhereSet> getWhereSet(String searchTerm) {
+		ArrayList<WhereSet> WhereSetList = new ArrayList<WhereSet>();
+		
+		///////////////////////////////
+		if (!searchTerm.equals("")) {
+			WhereSetList.add(new WhereSet(Protocol.WhereSet.OP_BRACE_OPEN));
+			WhereSetList.add(new WhereSet("IDX_GOODS_NM", Protocol.WhereSet.OP_HASALL, searchTerm, 100));
+			WhereSetList.add(new WhereSet(Protocol.WhereSet.OP_OR));
+			WhereSetList.add(new WhereSet("IDX_GOODS_NM", Protocol.WhereSet.OP_HASALL, searchTerm, 100));
+			WhereSetList.add(new WhereSet(Protocol.WhereSet.OP_BRACE_CLOSE));			
+		}
+		
+		return WhereSetList;
+	}
+	
+	public static OrderBySet []  getOrderBySet() {
+		
+        OrderBySet [] orderBySet = null;
+
+        orderBySet = new OrderBySet[1];
+        
+        orderBySet = new OrderBySet[] { new OrderBySet(false,"WEIGHT", Protocol.OrderBySet.OP_POSTWEIGHT)};
+        
+        return orderBySet;
+    }
+	
+	public static GroupBySet []  getGroupBySet() {
+		
+		GroupBySet [] groupBySet = null;
+		
+		groupBySet = new GroupBySet[2];
+		groupBySet = new GroupBySet[] { 
+				new GroupBySet("GROUP_FULL_CATE_NO", (byte) (Protocol.GroupBySet.OP_COUNT | Protocol.GroupBySet.ORDER_COUNT), "DESC"),
+				new GroupBySet("GROUP_FULL_CATE_NM", (byte) (Protocol.GroupBySet.OP_COUNT | Protocol.GroupBySet.ORDER_COUNT), "DESC"),
+				new GroupBySet("GROUP_BRAND_CD", (byte) (Protocol.GroupBySet.OP_COUNT | Protocol.GroupBySet.ORDER_COUNT), "DESC"),
+		};
+        
+        return groupBySet;
+    }
+	
+	public static JSONObject benerSearchApi(Map<String, Object> parameter) {
+		
+        //------- Parameter ---------------
+        String adminIp = (String)parameter.get("adminIp");					//Ip
+        int adminPort = (Integer)parameter.get("adminPort");					//Port
+         
+        String searchKeyword = (String)parameter.get("searchKeyword");if (searchKeyword == null) {searchKeyword = "";}				//Search Word
+        
+  
+       
+        //------- Mariner API ----------------
+        int queryCount = 0;
+        
+        QuerySet querySet = new QuerySet(1);
+        QueryParser queryParser = new QueryParser();            //QueryParser
+        WhereSet [] whereSet = null;                            //WhereSet[]
+        SelectSet [] selectSet = null;                          //SelectSet[]
+        OrderBySet[] orderBySet = null;                         //OrderBySet[]
+        GroupBySet[] groupBySet = null;							//GroupBySet[]
+
+        int returnCode = -1;
+        int indexs = 0;
+        int counts = 5;
+        
+        CommandSearchRequest command = null;
+        
+        String startTag = "<Strong>";
+    	String endTag = "</Strong>";
+    	
+    	Query query =  new Query(startTag, endTag);
+        
+        ArrayList<SelectSet> selectSetList = null;
+        ArrayList<WhereSet> whereSetList = null;
+        SelectSet[] getSelectSetFiels = null;
+        
+        selectSetList = getSelectSet();
+        selectSet = new SelectSet[selectSetList.size()];
+        
+        for(int a=0;a<selectSetList.size();a++){
+        	selectSet[a] = selectSetList.get(a);
+        }
+        
+        //whereSet
+        whereSetList = getWhereSet(searchKeyword);
+        whereSet = new WhereSet[whereSetList.size()];
+        
+        for(int b=0;b<whereSetList.size();b++){
+        	whereSet[b] = whereSetList.get(b);
+        }
+         
+        orderBySet = getOrderBySet();		
+        query.setOrderby(orderBySet);
+        
+        groupBySet = getGroupBySet();
+
+        
+        query.setSelect(selectSet);
+        query.setWhere(whereSet);
+        //query.setFilter(filterSet);
+        query.setGroupBy(groupBySet);
+        query.setFrom("GOODS");
+        query.setResult(0 , 6);					
+        query.setDebug(true);
+        query.setLoggable(true);
+        query.setSearchKeyword(searchKeyword);
+        query.setThesaurusOption((byte) (Protocol.ThesaurusOption.EQUIV_SYNONYM | Protocol.ThesaurusOption.QUASI_SYNONYM));
+        query.setPrintQuery(true);
+        querySet.addQuery(query);
+        System.out.println("##### query0= " + queryParser.queryToString(query));
+        
+        getSelectSetFiels = query.getSelectFields();
+        
+        
+        
+        //------- Result ------------------
+        Result[] resultlist = null;        
+        LinkedHashMap<String, String> resultMap = new LinkedHashMap<String, String>();
+        Result result = null;
+        String totalSize = "";
+        List<Map<String, String>> List = null;
+        List<String> cateCdList = new ArrayList<String>();
+        List<String> cateNmList = new ArrayList<String>();
+        List<String> brandList = new ArrayList<String>();
+        LinkedHashMap<String, List<String>> groupMap = new LinkedHashMap<String, List<String>>();
+        Map<String, String> totalMap = new HashMap<String, String>();			//검색 결과 개수
+        List<Map<String, String>> resultList = new ArrayList<Map<String, String>>();
+        List<Object> groupList = new ArrayList<Object>();
+        JSONObject resultJson = new JSONObject();
+        
+        //---------------------------------
+        
+        
+        try {
+        	if (!searchKeyword.equals("")) {
+        		command = new CommandSearchRequest(adminIp, adminPort);        		
+        		returnCode = command.request(querySet);
+        		System.out.println("returnCode ########## : " + returnCode);
+        		if (returnCode > 0) {
+        			ResultSet results = command.getResultSet();
+        			resultlist = results.getResultList();
+        		}else{
+        			resultlist = new Result[1]; 
+        			resultlist[0] = new Result();
+        		}
+        	}		
+			
+		} catch (Exception e) {  
+			e.printStackTrace();
+		}
+       
+		for (int k = 0; resultlist != null && k < resultlist.length; k++) {			
+			
+			result = resultlist[k];
+			resultList = new ArrayList<Map<String,String>>();				
+			
+			if (result != null) {				
+				// total
+				totalSize = Integer.toString(result.getTotalSize());
+				totalMap.put("TOTAL", totalSize);								
+				// 검색결과
+				for (int i = 0; i < result.getRealSize(); i++) {
+					resultMap = new LinkedHashMap<String, String>();			
+					for (int j = 0 ; j < result.getNumField(); j++) {
+						resultMap.put(convert2CamelCase(new String(getSelectSetFiels[j].getField())), new String(result.getResult(i,j)));
+						//resultMap.put(new String(getSelectSetFiels[j].getField()), new String(result.getResult(i,j)));
+					}
+					resultList.add(resultMap);
+				}
+			}
+			
+			
+			if (result.getGroupResultSize() != 0) {
+				GroupResult[] groupResults = result.getGroupResults();
+				
+				for (int i = 0; i < groupResults.length; i++) {
+					
+					int rSize = groupResults[i].groupResultSize();
+					groupMap = new LinkedHashMap<String, List<String>>();
+					
+					for (int j = 0; j < rSize; j++) {
+						
+						String id = new String(groupResults[i].getId(j));
+						
+						if (i == 0) {
+							cateCdList.add(id);
+							groupMap.put("cateCd", cateCdList);
+						}else if(i == 1) {
+							cateNmList.add(id);
+							groupMap.put("cateNm", cateNmList);
+						}else if(i == 2) {
+							brandList.add(id);
+							groupMap.put("brand", brandList);
+						}
+						
+					}
+					
+					groupList.add(groupMap);
+					//groupList.add(resultMap);
+					
+				}
+				resultJson.put("group", groupList);
+				resultJson.put("result", resultList);
+				
+			}
+		}
+		
+        
+        return resultJson;
+    }
+	
+	public static JSONObject getAutoComplete(Map<String, Object> parameter) throws IRException {
+		
+		String adminIp = (String) parameter.get("adminIp");if (adminIp == null) {adminIp = "";}
+        int adminPort = Integer.parseInt(parameter.get("adminPort").toString());
+        String searchTerm = (String)parameter.get("searchTerm");if (searchTerm == null) {searchTerm = "";}				//Search Word
+        
+        String searchKeyword = "";
+        int total = 0;
+        
+        parameter = new HashMap<String,Object>();
+        
+        parameter.put("adminIp", adminIp);
+        parameter.put("adminPort", adminPort);
+        
+        /////// 자동완성 키워드 검색 ///////////////////////
+		Query query = new Query();
+		QuerySet querySet = new QuerySet(1);
+		
+		Result result = null;
+		Result[] resultlist = null;
+		SelectSet[] selectSet = null;
+		SelectSet[] getselectSet = null;
+		WhereSet[] whereSet = null;
+		OrderBySet[] orderBySet = null;
+		GroupBySet[] groupBySet = null;
+		CommandSearchRequest cmd = null;			
+		
+		
+		//select
+		selectSet = new SelectSet[]{
+				new SelectSet("KEYWORD", Protocol.SelectSet.NONE),
+				//new SelectSet("CNT", Protocol.SelectSet.NONE)
+		};
+		
+		//where	
+		whereSet = new WhereSet[]{
+				new WhereSet(Protocol.WhereSet.OP_BRACE_OPEN),
+				new WhereSet("IDX_KEYWORD", Protocol.WhereSet.OP_HASALL, searchTerm, 100),
+				new WhereSet(Protocol.WhereSet.OP_BRACE_CLOSE)
+		};
+		
+		
+		query.setFrom("AUTOSEARCH");
+		query.setSelect(selectSet);
+		query.setWhere(whereSet);
+		query.setOrderby(orderBySet);
+		query.setResult(0,9);
+		query.setSearch(true);
+		query.setLoggable(false);			
+		query.setDebug(true);				
+		querySet.addQuery(query);
+		getselectSet = query.getSelectFields(); 
+		
+		CommandSearchRequest command = new CommandSearchRequest(adminIp, adminPort);
+		
+		int returnCode = command.request(querySet);
+		
+		if (returnCode > 0) {
+			ResultSet results = command.getResultSet();
+			resultlist = results.getResultList();
+		}else{
+			resultlist = new Result[1];
+			resultlist[0] = new Result();
+		}
+		
+		List<Map<String, String>> autoList = new ArrayList<Map<String,String>>();
+		Map<String, Object> queryMap = new HashMap<String, Object>();
+		Map<String, String> resultMap = new HashMap<String, String>();
+		
+		for (int k = 0; resultlist != null && k < resultlist.length; k++) {
+			result = resultlist[k];
+			total = result.getTotalSize();
+			if (k == 0) {
+				if (result != null && result.getRealSize() != 0) {
+					for (int i = 0; i < result.getRealSize(); i++) {
+						resultMap = new HashMap<String, String>();
+						for (int j = 0 ; j < result.getNumField(); j++) {
+							if (j==0) {searchKeyword = new String(result.getResult(i,j));}
+							resultMap.put(convert2CamelCase(new String(getselectSet[j].getField())), new String(result.getResult(i,j)));
+						}
+						autoList.add(resultMap);
+					}
+				} 	
+			} 
+		}
+		
+		JSONObject resultJson = new JSONObject();
+		
+		resultJson.put("autoList", autoList);
+		
+		if (total > 0) {
+			parameter.put("searchKeyword", searchKeyword);
+			HashMap<String, Object> searchReturn = benerSearchApi(parameter);
+			resultJson.put("group", searchReturn.get("group"));
+			resultJson.put("result", searchReturn.get("result"));
+		}
+		
+		
+        
+     
+        
+        
+        return resultJson;
+	}
+	
+	public static JSONObject trendKeyword (Map<String, Object> parameter) throws IRException{
+		
+		Query query = new Query();
+		
+		QuerySet querySet = new QuerySet(1);
+		
+        String adminIp = (String) parameter.get("adminIp");if (adminIp == null) {adminIp = "";}
+        int adminPort = Integer.parseInt(parameter.get("adminPort").toString());
+
+        Result result = null;					
+        Result[] resultlist = null;
+        SelectSet[] getselectSet = null;
+        
+        List<Map<String, String>> trendList = new ArrayList<Map<String,String>>();
+		
+		Map<String, String> resultMap = new HashMap<String, String>();
+     
+        // SelectSet
+        SelectSet[] selectSet = new SelectSet[]{
+            new SelectSet("KEYWORD", Protocol.SelectSet.NONE),
+            new SelectSet("RANKING", Protocol.SelectSet.NONE),
+            new SelectSet("PREV_RANK", Protocol.SelectSet.NONE)
+        
+        };
+
+        WhereSet[] whereSet = new WhereSet[]{
+            new WhereSet("IDX_TRENDS_ID", Protocol.WhereSet.OP_HASALL, "trend", 100)
+        };
+
+        OrderBySet[] orderbySet = new OrderBySet[] {
+            new OrderBySet(false, "SORT_RANKING", Protocol.OrderBySet.OP_POSTWEIGHT)
+        };
+        
+        query.setFrom("TRENDKEYWORD");
+        query.setSelect(selectSet);
+        query.setWhere(whereSet);
+        query.setOrderby(orderbySet);
+        query.setResult(0, 29); // 10건만 검색
+        query.setLoggable(true);
+        query.setDebug(true);
+        query.setPrintQuery(false);
+        querySet.addQuery(query);
+        
+        getselectSet = query.getSelectFields();   
+        CommandSearchRequest command = new CommandSearchRequest(adminIp, adminPort);
+        
+        int returnCode = command.request(querySet);
+        
+        if (returnCode > 0) {
+			ResultSet results = command.getResultSet();
+			resultlist = results.getResultList();
+		}else{
+			resultlist = new Result[1];
+			resultlist[0] = new Result();
+		}
+        
+        for (int k = 0; resultlist != null && k < resultlist.length; k++) {
+			result = resultlist[k];
+			if (k == 0) {
+				if (result != null && result.getRealSize() != 0) {
+					for (int i = 0; i < result.getRealSize(); i++) {
+						resultMap = new HashMap<String, String>();
+						for (int j = 0 ; j < result.getNumField(); j++) {
+							resultMap.put(convert2CamelCase(new String(getselectSet[j].getField())) , new String(result.getResult(i,j)));
+						}
+						trendList.add(resultMap);
+					}
+				} 	
+			} 
+		}
+        
+        JSONObject resultJson = new JSONObject();
+        resultJson.put("trendList", trendList);
+        System.out.println("result_trend : " + resultJson);
+        
+        return resultJson;
+    }
+	
+	
+
+	public static  String convert2CamelCase(String underScore) {
+
+		 
+
+        // '_' 가 나타나지 않으면 이미 camel case 로 가정함.
+
+        // 단 첫째문자가 대문자이면 camel case 변환 (전체를 소문자로) 처리가
+
+        // 필요하다고 가정함. --> 아래 로직을 수행하면 바뀜
+
+        if (underScore.indexOf('_') < 0
+
+            && Character.isLowerCase(underScore.charAt(0))) {
+
+            return underScore;
+
+        }
+
+        StringBuilder result = new StringBuilder();
+
+        boolean nextUpper = false;
+
+        int len = underScore.length();
+
+ 
+
+        for (int i = 0; i < len; i++) {
+
+            char currentChar = underScore.charAt(i);
+
+            if (currentChar == '_') {
+
+                nextUpper = true;
+
+            } else {
+
+                if (nextUpper) {
+
+                    result.append(Character.toUpperCase(currentChar));
+
+                    nextUpper = false;
+
+                } else {
+
+                    result.append(Character.toLowerCase(currentChar));
+
+                }
+
+            }
+
+        }
+
+        return result.toString();
+
+    }
+	
+}
+

BIN
산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210409/PlanSearch.jar


+ 499 - 0
산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210409/PlanSearch.java

@@ -0,0 +1,499 @@
+package istyle;
+
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.json.simple.JSONObject;
+
+import com.diquest.ir.client.command.CommandSearchRequest;
+import com.diquest.ir.common.exception.IRException;
+import com.diquest.ir.common.msg.protocol.Protocol;
+import com.diquest.ir.common.msg.protocol.query.SelectSet;
+import com.diquest.ir.common.msg.protocol.query.WhereSet;
+import com.diquest.ir.common.msg.protocol.result.GroupResult;
+import com.diquest.ir.common.msg.protocol.result.Result;
+import com.diquest.ir.common.msg.protocol.result.ResultSet;
+import com.diquest.ir.common.msg.protocol.query.FilterSet;
+import com.diquest.ir.common.msg.protocol.query.GroupBySet;
+import com.diquest.ir.common.msg.protocol.query.OrderBySet;
+import com.diquest.ir.common.msg.protocol.query.Query;
+import com.diquest.ir.common.msg.protocol.query.QueryParser;
+import com.diquest.ir.common.msg.protocol.query.QuerySet;
+
+public class PlanSearch {
+	
+	
+	public static ArrayList<SelectSet> getSelectSet() {
+	
+        ArrayList<SelectSet> selectSetList = new ArrayList<SelectSet>();
+        
+        
+        selectSetList.add(new SelectSet("PLAN_SQ"));
+        selectSetList.add(new SelectSet("PLAN_NM",(byte)(Protocol.SelectSet.HIGHLIGHT),200));
+        selectSetList.add(new SelectSet("PLAN_GB"));
+        selectSetList.add(new SelectSet("PLAN_CUST_GRADE"));
+        selectSetList.add(new SelectSet("PLAN_CUST_DIVISION"));
+        selectSetList.add(new SelectSet("OPEN_YN"));
+        selectSetList.add(new SelectSet("MAIN_PIMG"));
+        selectSetList.add(new SelectSet("MAIN_MIMG"));
+        selectSetList.add(new SelectSet("GOODS_CD"));
+        selectSetList.add(new SelectSet("FRONT_GB"));
+        selectSetList.add(new SelectSet("DTL_TITLE1"));
+        selectSetList.add(new SelectSet("DISP_STDT"));
+        selectSetList.add(new SelectSet("DISP_EDDT"));
+     
+        return selectSetList;
+    }
+	
+	public static ArrayList<SelectSet> getGoodsSelectSet() {
+		
+        ArrayList<SelectSet> selectSetList = new ArrayList<SelectSet>();
+        
+        
+        selectSetList.add(new SelectSet("GOODS_CD"));
+        selectSetList.add(new SelectSet("GOODS_NM",(byte)(Protocol.SelectSet.HIGHLIGHT),200));
+        selectSetList.add(new SelectSet("GOODS_GB"));
+        selectSetList.add(new SelectSet("FOREIGN_BUY_YN"));
+        selectSetList.add(new SelectSet("PARALLEL_IMPORT_YN"));
+        selectSetList.add(new SelectSet("ORDER_MADE_YN"));
+        selectSetList.add(new SelectSet("GOODS_SNM"));
+        selectSetList.add(new SelectSet("BRAND_CD"));
+        selectSetList.add(new SelectSet("ITEMKIND_CD"));
+        selectSetList.add(new SelectSet("FORMAL_GB"));
+        selectSetList.add(new SelectSet("LIST_PRICE"));
+        selectSetList.add(new SelectSet("CURR_PRICE"));
+        selectSetList.add(new SelectSet("SELF_GOODS_YN"));
+        selectSetList.add(new SelectSet("GOODS_STAT"));
+        selectSetList.add(new SelectSet("PNT_PRATE"));
+        selectSetList.add(new SelectSet("PRE_PPNT_USABLE_YN"));
+        selectSetList.add(new SelectSet("PNT_MRATE"));
+        selectSetList.add(new SelectSet("PRE_MPNT_USABLE_YN"));
+        selectSetList.add(new SelectSet("MIN_ORD_QTY"));
+        selectSetList.add(new SelectSet("MAX_ORD_QTY"));
+        selectSetList.add(new SelectSet("DAY_MAX_ORD_QTY"));
+        selectSetList.add(new SelectSet("SEX_GB"));
+        selectSetList.add(new SelectSet("MAIN_COLOR_CD"));
+        selectSetList.add(new SelectSet("SUPPLY_COMP_CD"));
+        selectSetList.add(new SelectSet("SELF_MALL_YN"));
+        selectSetList.add(new SelectSet("AGE_GRP_CD"));
+        selectSetList.add(new SelectSet("SEASON_CD"));
+        selectSetList.add(new SelectSet("GOODS_TYPE"));
+        selectSetList.add(new SelectSet("REG_DT"));
+        selectSetList.add(new SelectSet("BRAND_GROUP_NM"));
+        selectSetList.add(new SelectSet("BRAND_GROUP_NO"));
+        selectSetList.add(new SelectSet("DELV_FEE"));
+        selectSetList.add(new SelectSet("MIN_ORD_AMT"));
+        selectSetList.add(new SelectSet("ORDER_CNT"));
+        selectSetList.add(new SelectSet("REVIEW_CNT"));
+        selectSetList.add(new SelectSet("SIZE_GB"));
+        selectSetList.add(new SelectSet("SIZE_GB_NM"));
+        selectSetList.add(new SelectSet("QUIK_DELV_YN"));
+        selectSetList.add(new SelectSet("COLOR_CD"));
+        selectSetList.add(new SelectSet("SIZES"));
+        selectSetList.add(new SelectSet("CPN_PC_ICON"));
+        selectSetList.add(new SelectSet("CPN_MO_ICON"));
+        selectSetList.add(new SelectSet("CPN_APP_ICON"));
+        selectSetList.add(new SelectSet("FREEGIFT_ICON"));
+        selectSetList.add(new SelectSet("AD_KEYWORD"));
+        selectSetList.add(new SelectSet("VIDEO_GB_M"));
+        selectSetList.add(new SelectSet("VIDEO_VAL_M"));
+        selectSetList.add(new SelectSet("VIDEO_GB_S"));
+        selectSetList.add(new SelectSet("VIDEO_VAL_S"));
+        selectSetList.add(new SelectSet("GOODS_GB_NM"));
+        selectSetList.add(new SelectSet("SEX_NM"));
+        selectSetList.add(new SelectSet("AGE_GRP_NM"));
+        selectSetList.add(new SelectSet("SEASON_NM"));
+        
+     
+        return selectSetList;
+    }
+	
+	public static ArrayList<WhereSet> getWhereSet(String searchTerm) {
+		ArrayList<WhereSet> WhereSetList = new ArrayList<WhereSet>();
+		
+		///////////////////////////////
+		if (!searchTerm.equals("")) {
+			WhereSetList.add(new WhereSet(Protocol.WhereSet.OP_BRACE_OPEN));
+			WhereSetList.add(new WhereSet("IDX_PLAN_NM", Protocol.WhereSet.OP_HASALL, searchTerm, 100));
+			WhereSetList.add(new WhereSet(Protocol.WhereSet.OP_OR));
+			WhereSetList.add(new WhereSet("IDX_PLAN_NM_BI", Protocol.WhereSet.OP_HASALL, searchTerm, 100));
+			WhereSetList.add(new WhereSet(Protocol.WhereSet.OP_BRACE_CLOSE));
+			WhereSetList.add(new WhereSet(Protocol.WhereSet.OP_AND));
+			WhereSetList.add(new WhereSet("IDX_PLAN_GB", Protocol.WhereSet.OP_HASALL, "E", 100));
+		}
+		
+		return WhereSetList;
+	}
+	
+	public static ArrayList<WhereSet> getGoodsWhereSet(String goods) {
+		ArrayList<WhereSet> WhereSetList = new ArrayList<WhereSet>();
+		
+		///////////////////////////////
+		if (!goods.equals("")) {
+			WhereSetList.add(new WhereSet(Protocol.WhereSet.OP_BRACE_OPEN));
+			WhereSetList.add(new WhereSet("IDX_GOODS_CD_WS", Protocol.WhereSet.OP_HASANY, goods));
+			WhereSetList.add(new WhereSet(Protocol.WhereSet.OP_BRACE_CLOSE));			
+		}
+		
+		return WhereSetList;
+	}
+	
+	public static OrderBySet []  getOrderBySet() {
+		
+        OrderBySet [] orderBySet = null;
+
+        orderBySet = new OrderBySet[1];
+        
+        orderBySet = new OrderBySet[] { new OrderBySet(false,"WEIGHT", Protocol.OrderBySet.OP_POSTWEIGHT)};
+        
+        return orderBySet;
+    }
+	
+	public static JSONObject planSearchApi(Map<String, Object> parameter) {
+		
+        //------- Parameter ---------------
+        String adminIp = (String)parameter.get("adminIp");					//Ip
+        int adminPort = (Integer)parameter.get("adminPort");					//Port
+        
+        int indexs = 0;
+        int counts = 5;
+        
+        String searchTerm = (String)parameter.get("searchTerm");if (searchTerm == null) {searchTerm = "";}				//Search Word
+        indexs = (Integer)parameter.get("indexs");
+        counts = (Integer)parameter.get("counts");
+        //------- Mariner API ----------------
+        int queryCount = 0;
+        
+        QuerySet querySet = new QuerySet(1);
+        QueryParser queryParser = new QueryParser();            //QueryParser
+        WhereSet [] whereSet = null;                            //WhereSet[]
+        SelectSet [] selectSet = null;                          //SelectSet[]
+        OrderBySet[] orderBySet = null;                         //OrderBySet[]
+        GroupBySet[] groupBySet = null;							//GroupBySet[]
+
+        int returnCode = -1;
+        
+        
+        CommandSearchRequest command = null;
+        
+        String startTag = "<Strong>";
+    	String endTag = "</Strong>";
+    	
+    	Query query =  new Query(startTag, endTag);
+        
+        ArrayList<SelectSet> selectSetList = null;
+        ArrayList<WhereSet> whereSetList = null;
+        SelectSet[] getSelectSetFiels = null;
+        
+        selectSetList = getSelectSet();
+        selectSet = new SelectSet[selectSetList.size()];
+        
+        for(int a=0;a<selectSetList.size();a++){
+        	selectSet[a] = selectSetList.get(a);
+        }
+        
+        //whereSet
+        whereSetList = getWhereSet(searchTerm);
+        whereSet = new WhereSet[whereSetList.size()];
+        
+        for(int b=0;b<whereSetList.size();b++){
+        	whereSet[b] = whereSetList.get(b);
+        }
+        orderBySet = getOrderBySet();		
+        query.setOrderby(orderBySet);
+        
+        query.setSelect(selectSet);
+        query.setWhere(whereSet);
+        query.setFrom("PLAN_EVENT");
+        query.setResult(0 , 6);					
+        query.setDebug(true);
+        query.setLoggable(true);
+        query.setSearchKeyword(searchTerm);
+        query.setThesaurusOption((byte) (Protocol.ThesaurusOption.EQUIV_SYNONYM | Protocol.ThesaurusOption.QUASI_SYNONYM));
+        query.setPrintQuery(true);
+        querySet.addQuery(query);
+        //System.out.println("##### query0= " + queryParser.queryToString(query0));
+        
+        //getSelectSetFiels = query.getSelectFields();
+        
+        
+        
+        //------- Result ------------------
+        Result[] resultlist = null;        
+        Map<String, Object> resultMap = null;
+        Result result = null;
+        String totalSize = "";
+        List<Map<String, Object>> List = null;
+        Map<String, String> totalMap = new HashMap<String, String>();			//검색 결과 개수
+        List<Map<String, String>> totalList = new ArrayList<Map<String, String>>();
+        Map<String, Map<String, String>> goodsMap = new HashMap<String, Map<String,String>>();
+        List<String> goodsList = new ArrayList<String>();
+        JSONObject resultJson = new JSONObject();
+        
+        //---------------------------------
+        
+        
+        try {
+        	if (!searchTerm.equals("")) {
+        	}		
+        	command = new CommandSearchRequest(adminIp, adminPort);        		
+        	returnCode = command.request(querySet);
+//        		System.out.println("returnCode ########## : " + returnCode);
+        	if (returnCode > 0) {
+        		ResultSet results = command.getResultSet();
+        		resultlist = results.getResultList();
+        	}else{
+        		resultlist = new Result[1]; 
+        		resultlist[0] = new Result();
+        	}
+			
+		} catch (Exception e) {  
+			e.printStackTrace();
+		}
+		for (int k = 0; resultlist != null && k < resultlist.length; k++) {			
+			
+			result = resultlist[k];
+			List = new ArrayList<Map<String,Object>>();				
+			
+			if (result != null) {				
+				// total
+				totalSize = Integer.toString(result.getTotalSize());
+				totalMap.put("TOTAL", totalSize);								
+				// 검색결과
+				for (int i = 0; i < result.getRealSize(); i++) {
+					resultMap = new HashMap<String, Object>();					
+					for (int j = 0 ; j < result.getNumField(); j++) {
+						
+						resultMap.put(convert2CamelCase(new String(query.getSelectFields()[j].getField())), new String(result.getResult(i,j)));
+						
+						///// 검색결과 담기
+						if (new String(query.getSelectFields()[j].getField()).equals("GOODS_CD") && !new String(result.getResult(i,j)).equals("")) {
+							
+							if (!new String(result.getResult(i,j)).equals("")) {
+								parameter.put("goodsCd", new String(result.getResult(i,j)));
+								HashMap<String, Object> searchReturn = goodsSearchApi(parameter);
+								resultMap.put("goodsSearch", searchReturn.get("result"));
+								
+							}
+						}
+					}
+					List.add(resultMap);
+				}
+			}
+			resultJson.put("result", List);
+			
+		}
+		
+//		if (result.getTotalSize() > 0) {
+//			
+//			for (int i = 0; i < goodsList.size(); i++) {
+//				
+//				if (!goodsList.get(i).equals("")) {
+//					
+//					parameter.put("goods", goodsList.get(i));
+//					System.out.println("gli : " + goodsList.get(i));
+//					HashMap<String, Object> searchReturn = goodsSearchApi(parameter);
+//					searchReturn.get("result");
+//					
+//					
+//					
+//				}
+//		
+//				//System.out.println("result"+searchReturn.get("result"));
+//			}
+//		}
+		
+		System.out.println("resultJson : "+resultJson);
+		resultJson.put("totalSize", totalSize);						
+		totalList.add(totalMap);		
+        
+        return resultJson;
+    }
+	
+	public static JSONObject goodsSearchApi(Map<String, Object> parameter) {
+		
+        //------- Parameter ---------------
+        String adminIp = (String)parameter.get("adminIp");					//Ip
+        int adminPort = (Integer)parameter.get("adminPort");					//Port
+        
+        String goodsCd = (String)parameter.get("goodsCd");				//Search Word
+        
+        goodsCd = goodsCd.replace(",", " ");
+        //------- Mariner API ----------------
+        int queryCount = 0;
+        
+        QuerySet querySet = new QuerySet(1);
+        QueryParser queryParser = new QueryParser();            //QueryParser
+        WhereSet [] whereSet = null;                            //WhereSet[]
+        SelectSet [] selectSet = null;                          //SelectSet[]
+        OrderBySet[] orderBySet = null;                         //OrderBySet[]
+        GroupBySet[] groupBySet = null;							//GroupBySet[]
+
+        int returnCode = -1;
+        int indexs = 0;
+        int counts = 5;
+        
+        CommandSearchRequest command = null;
+        
+        String startTag = "<Strong>";
+    	String endTag = "</Strong>";
+    	
+    	Query query =  new Query(startTag, endTag);
+        
+        ArrayList<SelectSet> selectSetList = null;
+        ArrayList<WhereSet> whereSetList = null;
+        SelectSet[] getSelectSetFiels = null;
+        
+        selectSetList = getGoodsSelectSet();
+        selectSet = new SelectSet[selectSetList.size()];
+        
+        for(int a=0;a<selectSetList.size();a++){
+        	selectSet[a] = selectSetList.get(a);
+        }
+        
+        //whereSet
+        whereSetList = getGoodsWhereSet(goodsCd);
+        whereSet = new WhereSet[whereSetList.size()];
+        
+        for(int b=0;b<whereSetList.size();b++){
+        	whereSet[b] = whereSetList.get(b);
+        }
+         
+        orderBySet = getOrderBySet();		
+        query.setOrderby(orderBySet);
+        
+        query.setSelect(selectSet);
+        query.setWhere(whereSet);
+        query.setFrom("GOODS");
+        query.setResult(0 , 3);					
+        query.setDebug(true);
+        query.setLoggable(false);
+        //query.setSearchKeyword();
+        query.setThesaurusOption((byte) (Protocol.ThesaurusOption.EQUIV_SYNONYM | Protocol.ThesaurusOption.QUASI_SYNONYM));
+        query.setPrintQuery(true);
+        querySet.addQuery(query);
+        //System.out.println("##### query0= " + queryParser.queryToString(query0));
+        
+        getSelectSetFiels = query.getSelectFields();
+        
+        
+        
+        //------- Result ------------------
+        Result[] resultlist = null;        
+        Map<String, String> resultMap = null;
+        Map<String, String> GresultMap = null;
+        Result result = null;
+        String totalSize = "";
+        List<Map<String, String>> List = null;
+        Map<String, String> totalMap = new HashMap<String, String>();			//검색 결과 개수
+        JSONObject resultJson = new JSONObject();
+        
+        //---------------------------------
+        
+        
+        try {
+        	if (!goodsCd.equals("")) {
+	        	command = new CommandSearchRequest(adminIp, adminPort);        		
+	        	returnCode = command.request(querySet);
+	//        		System.out.println("returnCode ########## : " + returnCode);
+	        	if (returnCode > 0) {
+	        		ResultSet results = command.getResultSet();
+	        		resultlist = results.getResultList();
+	        	}else{
+	        		resultlist = new Result[1]; 
+	        		resultlist[0] = new Result();
+	        	}
+        	}		
+			
+		} catch (Exception e) {  
+			e.printStackTrace();
+		}
+       
+		for (int k = 0; resultlist != null && k < resultlist.length; k++) {			
+			
+			result = resultlist[k];
+			List = new ArrayList<Map<String,String>>();				
+			
+			if (result != null) {				
+				// total
+				totalSize = Integer.toString(result.getTotalSize());
+		
+				totalMap.put("TOTAL", totalSize);								
+				// 검색결과
+				for (int i = 0; i < result.getRealSize(); i++) {
+					resultMap = new HashMap<String, String>();					
+					for (int j = 0 ; j < result.getNumField(); j++) {
+						resultMap.put(convert2CamelCase(new String(getSelectSetFiels[j].getField())), new String(result.getResult(i,j)));
+						//resultMap.put(new String(getSelectSetFiels[j].getField()), new String(result.getResult(i,j)));
+					}
+					List.add(resultMap);
+				}
+			}
+			resultJson.put("result", List);
+		}
+		
+		
+        return resultJson;
+    }
+
+	public static  String convert2CamelCase(String underScore) {
+
+		 
+
+        // '_' 가 나타나지 않으면 이미 camel case 로 가정함.
+
+        // 단 첫째문자가 대문자이면 camel case 변환 (전체를 소문자로) 처리가
+
+        // 필요하다고 가정함. --> 아래 로직을 수행하면 바뀜
+
+        if (underScore.indexOf('_') < 0
+
+            && Character.isLowerCase(underScore.charAt(0))) {
+
+            return underScore;
+
+        }
+
+        StringBuilder result = new StringBuilder();
+
+        boolean nextUpper = false;
+
+        int len = underScore.length();
+
+ 
+
+        for (int i = 0; i < len; i++) {
+
+            char currentChar = underScore.charAt(i);
+
+            if (currentChar == '_') {
+
+                nextUpper = true;
+
+            } else {
+
+                if (nextUpper) {
+
+                    result.append(Character.toUpperCase(currentChar));
+
+                    nextUpper = false;
+
+                } else {
+
+                    result.append(Character.toLowerCase(currentChar));
+
+                }
+
+            }
+
+        }
+
+        return result.toString();
+
+    }
+	
+}
+

BIN
산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210409/m4_client.jar


BIN
산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210409/m4_common.jar


BIN
산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210409/m4_util.jar


BIN
산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210409/검색API 정의서_v0.4.0_20210409.docx


BIN
산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210412.zip


+ 556 - 0
산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210412/AutoSearch.java

@@ -0,0 +1,556 @@
+package istyle;
+
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.json.simple.JSONObject;
+
+import com.diquest.ir.client.command.CommandSearchRequest;
+import com.diquest.ir.common.exception.IRException;
+import com.diquest.ir.common.msg.protocol.Protocol;
+import com.diquest.ir.common.msg.protocol.query.SelectSet;
+import com.diquest.ir.common.msg.protocol.query.WhereSet;
+import com.diquest.ir.common.msg.protocol.result.GroupResult;
+import com.diquest.ir.common.msg.protocol.result.Result;
+import com.diquest.ir.common.msg.protocol.result.ResultSet;
+import com.diquest.ir.common.msg.protocol.query.FilterSet;
+import com.diquest.ir.common.msg.protocol.query.GroupBySet;
+import com.diquest.ir.common.msg.protocol.query.OrderBySet;
+import com.diquest.ir.common.msg.protocol.query.Query;
+import com.diquest.ir.common.msg.protocol.query.QueryParser;
+import com.diquest.ir.common.msg.protocol.query.QuerySet;
+
+public class AutoSearch {
+	
+	
+	
+	public static ArrayList<SelectSet> getSelectSet() {
+	
+        ArrayList<SelectSet> selectSetList = new ArrayList<SelectSet>();
+        
+        
+        selectSetList.add(new SelectSet("GOODS_CD"));
+        selectSetList.add(new SelectSet("GOODS_NM",(byte)(Protocol.SelectSet.HIGHLIGHT),200));
+        selectSetList.add(new SelectSet("GOODS_GB"));
+        selectSetList.add(new SelectSet("FOREIGN_BUY_YN"));
+        selectSetList.add(new SelectSet("PARALLEL_IMPORT_YN"));
+        selectSetList.add(new SelectSet("ORDER_MADE_YN"));
+        selectSetList.add(new SelectSet("GOODS_SNM"));
+        selectSetList.add(new SelectSet("BRAND_CD"));
+        selectSetList.add(new SelectSet("ITEMKIND_CD"));
+        selectSetList.add(new SelectSet("FORMAL_GB"));
+        selectSetList.add(new SelectSet("LIST_PRICE"));
+        selectSetList.add(new SelectSet("CURR_PRICE"));
+        selectSetList.add(new SelectSet("SELF_GOODS_YN"));
+        selectSetList.add(new SelectSet("GOODS_STAT"));
+        selectSetList.add(new SelectSet("PNT_PRATE"));
+        selectSetList.add(new SelectSet("PRE_PPNT_USABLE_YN"));
+        selectSetList.add(new SelectSet("PNT_MRATE"));
+        selectSetList.add(new SelectSet("PRE_MPNT_USABLE_YN"));
+        selectSetList.add(new SelectSet("MIN_ORD_QTY"));
+        selectSetList.add(new SelectSet("MAX_ORD_QTY"));
+        selectSetList.add(new SelectSet("DAY_MAX_ORD_QTY"));
+        selectSetList.add(new SelectSet("SEX_GB"));
+        selectSetList.add(new SelectSet("MAIN_COLOR_CD"));
+        selectSetList.add(new SelectSet("SUPPLY_COMP_CD"));
+        selectSetList.add(new SelectSet("SELF_MALL_YN"));
+        selectSetList.add(new SelectSet("AGE_GRP_CD"));
+        selectSetList.add(new SelectSet("SEASON_CD"));
+        selectSetList.add(new SelectSet("GOODS_TYPE"));
+        selectSetList.add(new SelectSet("REG_DT"));
+        selectSetList.add(new SelectSet("BRAND_GROUP_NM"));
+        selectSetList.add(new SelectSet("BRAND_GROUP_NO"));
+        selectSetList.add(new SelectSet("DELV_FEE"));
+        selectSetList.add(new SelectSet("MIN_ORD_AMT"));
+        selectSetList.add(new SelectSet("ORDER_CNT"));
+        selectSetList.add(new SelectSet("REVIEW_CNT"));
+        selectSetList.add(new SelectSet("SIZE_GB"));
+        selectSetList.add(new SelectSet("SIZE_GB_NM"));
+        selectSetList.add(new SelectSet("QUIK_DELV_YN"));
+        selectSetList.add(new SelectSet("COLOR_CD"));
+        selectSetList.add(new SelectSet("SIZES"));
+        selectSetList.add(new SelectSet("CPN_PC_ICON"));
+        selectSetList.add(new SelectSet("CPN_MO_ICON"));
+        selectSetList.add(new SelectSet("CPN_APP_ICON"));
+        selectSetList.add(new SelectSet("FREEGIFT_ICON"));
+        selectSetList.add(new SelectSet("AD_KEYWORD"));
+        selectSetList.add(new SelectSet("VIDEO_GB_M"));
+        selectSetList.add(new SelectSet("VIDEO_VAL_M"));
+        selectSetList.add(new SelectSet("VIDEO_GB_S"));
+        selectSetList.add(new SelectSet("VIDEO_VAL_S"));
+        selectSetList.add(new SelectSet("GOODS_GB_NM"));
+        selectSetList.add(new SelectSet("SEX_NM"));
+        selectSetList.add(new SelectSet("AGE_GRP_NM"));
+        selectSetList.add(new SelectSet("SEASON_NM"));
+     
+        return selectSetList;
+    }
+	
+	public static ArrayList<WhereSet> getWhereSet(String searchTerm) {
+		ArrayList<WhereSet> WhereSetList = new ArrayList<WhereSet>();
+		
+		///////////////////////////////
+		if (!searchTerm.equals("")) {
+			WhereSetList.add(new WhereSet(Protocol.WhereSet.OP_BRACE_OPEN));
+			WhereSetList.add(new WhereSet("IDX_GOODS_NM", Protocol.WhereSet.OP_HASALL, searchTerm, 100));
+			WhereSetList.add(new WhereSet(Protocol.WhereSet.OP_OR));
+			WhereSetList.add(new WhereSet("IDX_GOODS_NM_BI", Protocol.WhereSet.OP_HASALL, searchTerm, 100));
+			WhereSetList.add(new WhereSet(Protocol.WhereSet.OP_BRACE_CLOSE));			
+		}
+		
+		return WhereSetList;
+	}
+	
+	public static OrderBySet []  getOrderBySet() {
+		
+        OrderBySet [] orderBySet = null;
+
+        orderBySet = new OrderBySet[1];
+        
+        orderBySet = new OrderBySet[] { new OrderBySet(false,"WEIGHT", Protocol.OrderBySet.OP_POSTWEIGHT)};
+        
+        return orderBySet;
+    }
+	
+	public static GroupBySet []  getGroupBySet() {
+		
+		GroupBySet [] groupBySet = null;
+		
+		groupBySet = new GroupBySet[2];
+		groupBySet = new GroupBySet[] { 
+				new GroupBySet("GROUP_FULL_CATE_NO", (byte) (Protocol.GroupBySet.OP_COUNT | Protocol.GroupBySet.ORDER_COUNT), "DESC"),
+				new GroupBySet("GROUP_FULL_CATE_NM", (byte) (Protocol.GroupBySet.OP_COUNT | Protocol.GroupBySet.ORDER_COUNT), "DESC"),
+				new GroupBySet("GROUP_BRAND_CD", (byte) (Protocol.GroupBySet.OP_COUNT | Protocol.GroupBySet.ORDER_COUNT), "DESC"),
+		};
+        
+        return groupBySet;
+    }
+	
+	public static JSONObject benerSearchApi(Map<String, Object> parameter) {
+		
+        //------- Parameter ---------------
+        String adminIp = (String)parameter.get("adminIp");					//Ip
+        int adminPort = (Integer)parameter.get("adminPort");					//Port
+         
+        String searchKeyword = (String)parameter.get("searchKeyword");if (searchKeyword == null) {searchKeyword = "";}				//Search Word
+        
+  
+       
+        //------- Mariner API ----------------
+        int queryCount = 0;
+        
+        QuerySet querySet = new QuerySet(1);
+        QueryParser queryParser = new QueryParser();            //QueryParser
+        WhereSet [] whereSet = null;                            //WhereSet[]
+        SelectSet [] selectSet = null;                          //SelectSet[]
+        OrderBySet[] orderBySet = null;                         //OrderBySet[]
+        GroupBySet[] groupBySet = null;							//GroupBySet[]
+
+        int returnCode = -1;
+        int indexs = 0;
+        int counts = 5;
+        
+        CommandSearchRequest command = null;
+        
+        String startTag = "<Strong>";
+    	String endTag = "</Strong>";
+    	
+    	Query query =  new Query(startTag, endTag);
+        
+        ArrayList<SelectSet> selectSetList = null;
+        ArrayList<WhereSet> whereSetList = null;
+        SelectSet[] getSelectSetFiels = null;
+        
+        selectSetList = getSelectSet();
+        selectSet = new SelectSet[selectSetList.size()];
+        
+        for(int a=0;a<selectSetList.size();a++){
+        	selectSet[a] = selectSetList.get(a);
+        }
+        
+        //whereSet
+        whereSetList = getWhereSet(searchKeyword);
+        whereSet = new WhereSet[whereSetList.size()];
+        
+        for(int b=0;b<whereSetList.size();b++){
+        	whereSet[b] = whereSetList.get(b);
+        }
+         
+        orderBySet = getOrderBySet();		
+        query.setOrderby(orderBySet);
+        
+        groupBySet = getGroupBySet();
+
+        
+        query.setSelect(selectSet);
+        query.setWhere(whereSet);
+        //query.setFilter(filterSet);
+        query.setGroupBy(groupBySet);
+        query.setFrom("GOODS");
+        query.setResult(0 , 6);					
+        query.setDebug(true);
+        query.setLoggable(true);
+        query.setSearchKeyword(searchKeyword);
+        query.setThesaurusOption((byte) (Protocol.ThesaurusOption.EQUIV_SYNONYM | Protocol.ThesaurusOption.QUASI_SYNONYM));
+        query.setPrintQuery(true);
+        querySet.addQuery(query);
+        System.out.println("##### query0= " + queryParser.queryToString(query));
+        
+        getSelectSetFiels = query.getSelectFields();
+        
+        
+        
+        //------- Result ------------------
+        Result[] resultlist = null;        
+        LinkedHashMap<String, String> resultMap = new LinkedHashMap<String, String>();
+        Result result = null;
+        String totalSize = "";
+        List<Map<String, String>> List = null;
+        List<String> cateCdList = new ArrayList<String>();
+        List<String> cateNmList = new ArrayList<String>();
+        List<String> brandList = new ArrayList<String>();
+        LinkedHashMap<String, List<String>> groupMap = new LinkedHashMap<String, List<String>>();
+        Map<String, String> totalMap = new HashMap<String, String>();			//검색 결과 개수
+        List<Map<String, String>> resultList = new ArrayList<Map<String, String>>();
+        List<Object> groupList = new ArrayList<Object>();
+        JSONObject resultJson = new JSONObject();
+        
+        //---------------------------------
+        
+        
+        try {
+        	if (!searchKeyword.equals("")) {
+        		command = new CommandSearchRequest(adminIp, adminPort);        		
+        		returnCode = command.request(querySet);
+        		System.out.println("returnCode ########## : " + returnCode);
+        		if (returnCode > 0) {
+        			ResultSet results = command.getResultSet();
+        			resultlist = results.getResultList();
+        		}else{
+        			resultlist = new Result[1]; 
+        			resultlist[0] = new Result();
+        		}
+        	}		
+			
+		} catch (Exception e) {  
+			e.printStackTrace();
+		}
+       
+		for (int k = 0; resultlist != null && k < resultlist.length; k++) {			
+			
+			result = resultlist[k];
+			resultList = new ArrayList<Map<String,String>>();				
+			
+			if (result != null) {				
+				// total
+				totalSize = Integer.toString(result.getTotalSize());
+				totalMap.put("TOTAL", totalSize);								
+				// 검색결과
+				for (int i = 0; i < result.getRealSize(); i++) {
+					resultMap = new LinkedHashMap<String, String>();			
+					for (int j = 0 ; j < result.getNumField(); j++) {
+						resultMap.put(convert2CamelCase(new String(getSelectSetFiels[j].getField())), new String(result.getResult(i,j)));
+						//resultMap.put(new String(getSelectSetFiels[j].getField()), new String(result.getResult(i,j)));
+					}
+					resultList.add(resultMap);
+				}
+			}
+			
+			
+			if (result.getGroupResultSize() != 0) {
+				GroupResult[] groupResults = result.getGroupResults();
+				
+				for (int i = 0; i < groupResults.length; i++) {
+					
+					int rSize = groupResults[i].groupResultSize();
+					groupMap = new LinkedHashMap<String, List<String>>();
+					
+					for (int j = 0; j < rSize; j++) {
+						
+						String id = new String(groupResults[i].getId(j));
+						
+						if (i == 0) {
+							cateCdList.add(id);
+							groupMap.put("cateCd", cateCdList);
+						}else if(i == 1) {
+							cateNmList.add(id);
+							groupMap.put("cateNm", cateNmList);
+						}else if(i == 2) {
+							brandList.add(id);
+							groupMap.put("brand", brandList);
+						}
+						
+					}
+					
+					groupList.add(groupMap);
+					//groupList.add(resultMap);
+					
+				}
+				resultJson.put("group", groupList);
+				resultJson.put("result", resultList);
+				
+			}
+		}
+		
+        
+        return resultJson;
+    }
+	
+	public static JSONObject getAutoComplete(Map<String, Object> parameter) throws IRException {
+		
+		String adminIp = (String) parameter.get("adminIp");if (adminIp == null) {adminIp = "";}
+        int adminPort = Integer.parseInt(parameter.get("adminPort").toString());
+        String searchTerm = (String)parameter.get("searchTerm");if (searchTerm == null) {searchTerm = "";}				//Search Word
+        
+        String searchKeyword = "";
+        int total = 0;
+        
+        parameter = new HashMap<String,Object>();
+        
+        parameter.put("adminIp", adminIp);
+        parameter.put("adminPort", adminPort);
+        
+        /////// 자동완성 키워드 검색 ///////////////////////
+		Query query = new Query();
+		QuerySet querySet = new QuerySet(1);
+		
+		Result result = null;
+		Result[] resultlist = null;
+		SelectSet[] selectSet = null;
+		SelectSet[] getselectSet = null;
+		WhereSet[] whereSet = null;
+		OrderBySet[] orderBySet = null;
+		GroupBySet[] groupBySet = null;
+		CommandSearchRequest cmd = null;			
+		
+		
+		//select
+		selectSet = new SelectSet[]{
+				new SelectSet("KEYWORD", Protocol.SelectSet.NONE),
+				//new SelectSet("CNT", Protocol.SelectSet.NONE)
+		};
+		
+		//where	
+		whereSet = new WhereSet[]{
+				new WhereSet(Protocol.WhereSet.OP_BRACE_OPEN),
+				new WhereSet("IDX_KEYWORD", Protocol.WhereSet.OP_HASALL, searchTerm, 100),
+				new WhereSet(Protocol.WhereSet.OP_BRACE_CLOSE)
+		};
+		
+		
+		query.setFrom("AUTOSEARCH");
+		query.setSelect(selectSet);
+		query.setWhere(whereSet);
+		query.setOrderby(orderBySet);
+		query.setResult(0,9);
+		query.setSearch(true);
+		query.setLoggable(false);			
+		query.setDebug(true);				
+		querySet.addQuery(query);
+		getselectSet = query.getSelectFields(); 
+		
+		CommandSearchRequest command = new CommandSearchRequest(adminIp, adminPort);
+		
+		int returnCode = command.request(querySet);
+		
+		if (returnCode > 0) {
+			ResultSet results = command.getResultSet();
+			resultlist = results.getResultList();
+		}else{
+			resultlist = new Result[1];
+			resultlist[0] = new Result();
+		}
+		
+		List<Map<String, String>> autoList = new ArrayList<Map<String,String>>();
+		Map<String, Object> queryMap = new HashMap<String, Object>();
+		Map<String, String> resultMap = new HashMap<String, String>();
+		
+		List<Map<String, Object>> parameterList = new ArrayList<Map<String,Object>>();
+		Map<String, Object> parameterMap = new HashMap<String, Object>();
+		
+		//받은 파라미터 리스트에 넣기
+		parameterMap.put("adminIp", adminIp);
+		parameterMap.put("adminPort", adminPort);
+		parameterMap.put("searchTerm", searchTerm);
+		parameterList.add(parameterMap);
+		
+		
+		for (int k = 0; resultlist != null && k < resultlist.length; k++) {
+			result = resultlist[k];
+			total = result.getTotalSize();
+			if (k == 0) {
+				if (result != null && result.getRealSize() != 0) {
+					for (int i = 0; i < result.getRealSize(); i++) {
+						resultMap = new HashMap<String, String>();
+						for (int j = 0 ; j < result.getNumField(); j++) {
+							if (j==0) {searchKeyword = new String(result.getResult(i,j));}
+							resultMap.put(convert2CamelCase(new String(getselectSet[j].getField())), new String(result.getResult(i,j)));
+						}
+						autoList.add(resultMap);
+					}
+				} 	
+			} 
+		}
+		
+		JSONObject resultJson = new JSONObject();
+		
+		resultJson.put("parameterList", parameterList);
+		resultJson.put("autoList", autoList);
+		
+		if (total > 0) {
+			parameter.put("searchKeyword", searchKeyword);
+			HashMap<String, Object> searchReturn = benerSearchApi(parameter);
+			resultJson.put("group", searchReturn.get("group"));
+			resultJson.put("result", searchReturn.get("result"));
+		}
+		
+		
+        
+     
+        
+        
+        return resultJson;
+	}
+	
+	public static JSONObject trendKeyword (Map<String, Object> parameter) throws IRException{
+		
+		Query query = new Query();
+		
+		QuerySet querySet = new QuerySet(1);
+		
+        String adminIp = (String) parameter.get("adminIp");if (adminIp == null) {adminIp = "";}
+        int adminPort = Integer.parseInt(parameter.get("adminPort").toString());
+
+        Result result = null;					
+        Result[] resultlist = null;
+        SelectSet[] getselectSet = null;
+        
+        List<Map<String, String>> trendList = new ArrayList<Map<String,String>>();
+		
+		Map<String, String> resultMap = new HashMap<String, String>();
+     
+        // SelectSet
+        SelectSet[] selectSet = new SelectSet[]{
+            new SelectSet("KEYWORD", Protocol.SelectSet.NONE),
+            new SelectSet("RANKING", Protocol.SelectSet.NONE),
+            new SelectSet("PREV_RANK", Protocol.SelectSet.NONE)
+        
+        };
+
+        WhereSet[] whereSet = new WhereSet[]{
+            new WhereSet("IDX_TRENDS_ID", Protocol.WhereSet.OP_HASALL, "trend", 100)
+        };
+
+        OrderBySet[] orderbySet = new OrderBySet[] {
+            new OrderBySet(false, "SORT_RANKING", Protocol.OrderBySet.OP_POSTWEIGHT)
+        };
+        
+        query.setFrom("TRENDKEYWORD");
+        query.setSelect(selectSet);
+        query.setWhere(whereSet);
+        query.setOrderby(orderbySet);
+        query.setResult(0, 29); // 10건만 검색
+        query.setLoggable(true);
+        query.setDebug(true);
+        query.setPrintQuery(false);
+        querySet.addQuery(query);
+        
+        getselectSet = query.getSelectFields();   
+        CommandSearchRequest command = new CommandSearchRequest(adminIp, adminPort);
+        
+        int returnCode = command.request(querySet);
+        
+        if (returnCode > 0) {
+			ResultSet results = command.getResultSet();
+			resultlist = results.getResultList();
+		}else{
+			resultlist = new Result[1];
+			resultlist[0] = new Result();
+		}
+        
+        for (int k = 0; resultlist != null && k < resultlist.length; k++) {
+			result = resultlist[k];
+			if (k == 0) {
+				if (result != null && result.getRealSize() != 0) {
+					for (int i = 0; i < result.getRealSize(); i++) {
+						resultMap = new HashMap<String, String>();
+						for (int j = 0 ; j < result.getNumField(); j++) {
+							resultMap.put(convert2CamelCase(new String(getselectSet[j].getField())) , new String(result.getResult(i,j)));
+						}
+						trendList.add(resultMap);
+					}
+				} 	
+			} 
+		}
+        
+        JSONObject resultJson = new JSONObject();
+        resultJson.put("trendList", trendList);
+        System.out.println("result_trend : " + resultJson);
+        
+        return resultJson;
+    }
+	
+	
+
+	public static  String convert2CamelCase(String underScore) {
+
+		 
+
+        // '_' 가 나타나지 않으면 이미 camel case 로 가정함.
+
+        // 단 첫째문자가 대문자이면 camel case 변환 (전체를 소문자로) 처리가
+
+        // 필요하다고 가정함. --> 아래 로직을 수행하면 바뀜
+
+        if (underScore.indexOf('_') < 0
+
+            && Character.isLowerCase(underScore.charAt(0))) {
+
+            return underScore;
+
+        }
+
+        StringBuilder result = new StringBuilder();
+
+        boolean nextUpper = false;
+
+        int len = underScore.length();
+
+ 
+
+        for (int i = 0; i < len; i++) {
+
+            char currentChar = underScore.charAt(i);
+
+            if (currentChar == '_') {
+
+                nextUpper = true;
+
+            } else {
+
+                if (nextUpper) {
+
+                    result.append(Character.toUpperCase(currentChar));
+
+                    nextUpper = false;
+
+                } else {
+
+                    result.append(Character.toLowerCase(currentChar));
+
+                }
+
+            }
+
+        }
+
+        return result.toString();
+
+    }
+	
+}
+

+ 511 - 0
산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210412/PlanSearch.java

@@ -0,0 +1,511 @@
+package istyle;
+
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.json.simple.JSONObject;
+
+import com.diquest.ir.client.command.CommandSearchRequest;
+import com.diquest.ir.common.exception.IRException;
+import com.diquest.ir.common.msg.protocol.Protocol;
+import com.diquest.ir.common.msg.protocol.query.SelectSet;
+import com.diquest.ir.common.msg.protocol.query.WhereSet;
+import com.diquest.ir.common.msg.protocol.result.GroupResult;
+import com.diquest.ir.common.msg.protocol.result.Result;
+import com.diquest.ir.common.msg.protocol.result.ResultSet;
+import com.diquest.ir.common.msg.protocol.query.FilterSet;
+import com.diquest.ir.common.msg.protocol.query.GroupBySet;
+import com.diquest.ir.common.msg.protocol.query.OrderBySet;
+import com.diquest.ir.common.msg.protocol.query.Query;
+import com.diquest.ir.common.msg.protocol.query.QueryParser;
+import com.diquest.ir.common.msg.protocol.query.QuerySet;
+
+public class PlanSearch {
+	
+	
+	public static ArrayList<SelectSet> getSelectSet() {
+	
+        ArrayList<SelectSet> selectSetList = new ArrayList<SelectSet>();
+        
+        
+        selectSetList.add(new SelectSet("PLAN_SQ"));
+        selectSetList.add(new SelectSet("PLAN_NM",(byte)(Protocol.SelectSet.HIGHLIGHT),200));
+        selectSetList.add(new SelectSet("PLAN_GB"));
+        selectSetList.add(new SelectSet("PLAN_CUST_GRADE"));
+        selectSetList.add(new SelectSet("PLAN_CUST_DIVISION"));
+        selectSetList.add(new SelectSet("OPEN_YN"));
+        selectSetList.add(new SelectSet("MAIN_PIMG"));
+        selectSetList.add(new SelectSet("MAIN_MIMG"));
+        selectSetList.add(new SelectSet("GOODS_CD"));
+        selectSetList.add(new SelectSet("FRONT_GB"));
+        selectSetList.add(new SelectSet("DTL_TITLE1"));
+        selectSetList.add(new SelectSet("DISP_STDT"));
+        selectSetList.add(new SelectSet("DISP_EDDT"));
+     
+        return selectSetList;
+    }
+	
+	public static ArrayList<SelectSet> getGoodsSelectSet() {
+		
+        ArrayList<SelectSet> selectSetList = new ArrayList<SelectSet>();
+        
+        
+        selectSetList.add(new SelectSet("GOODS_CD"));
+        selectSetList.add(new SelectSet("GOODS_NM",(byte)(Protocol.SelectSet.HIGHLIGHT),200));
+        selectSetList.add(new SelectSet("GOODS_GB"));
+        selectSetList.add(new SelectSet("FOREIGN_BUY_YN"));
+        selectSetList.add(new SelectSet("PARALLEL_IMPORT_YN"));
+        selectSetList.add(new SelectSet("ORDER_MADE_YN"));
+        selectSetList.add(new SelectSet("GOODS_SNM"));
+        selectSetList.add(new SelectSet("BRAND_CD"));
+        selectSetList.add(new SelectSet("ITEMKIND_CD"));
+        selectSetList.add(new SelectSet("FORMAL_GB"));
+        selectSetList.add(new SelectSet("LIST_PRICE"));
+        selectSetList.add(new SelectSet("CURR_PRICE"));
+        selectSetList.add(new SelectSet("SELF_GOODS_YN"));
+        selectSetList.add(new SelectSet("GOODS_STAT"));
+        selectSetList.add(new SelectSet("PNT_PRATE"));
+        selectSetList.add(new SelectSet("PRE_PPNT_USABLE_YN"));
+        selectSetList.add(new SelectSet("PNT_MRATE"));
+        selectSetList.add(new SelectSet("PRE_MPNT_USABLE_YN"));
+        selectSetList.add(new SelectSet("MIN_ORD_QTY"));
+        selectSetList.add(new SelectSet("MAX_ORD_QTY"));
+        selectSetList.add(new SelectSet("DAY_MAX_ORD_QTY"));
+        selectSetList.add(new SelectSet("SEX_GB"));
+        selectSetList.add(new SelectSet("MAIN_COLOR_CD"));
+        selectSetList.add(new SelectSet("SUPPLY_COMP_CD"));
+        selectSetList.add(new SelectSet("SELF_MALL_YN"));
+        selectSetList.add(new SelectSet("AGE_GRP_CD"));
+        selectSetList.add(new SelectSet("SEASON_CD"));
+        selectSetList.add(new SelectSet("GOODS_TYPE"));
+        selectSetList.add(new SelectSet("REG_DT"));
+        selectSetList.add(new SelectSet("BRAND_GROUP_NM"));
+        selectSetList.add(new SelectSet("BRAND_GROUP_NO"));
+        selectSetList.add(new SelectSet("DELV_FEE"));
+        selectSetList.add(new SelectSet("MIN_ORD_AMT"));
+        selectSetList.add(new SelectSet("ORDER_CNT"));
+        selectSetList.add(new SelectSet("REVIEW_CNT"));
+        selectSetList.add(new SelectSet("SIZE_GB"));
+        selectSetList.add(new SelectSet("SIZE_GB_NM"));
+        selectSetList.add(new SelectSet("QUIK_DELV_YN"));
+        selectSetList.add(new SelectSet("COLOR_CD"));
+        selectSetList.add(new SelectSet("SIZES"));
+        selectSetList.add(new SelectSet("CPN_PC_ICON"));
+        selectSetList.add(new SelectSet("CPN_MO_ICON"));
+        selectSetList.add(new SelectSet("CPN_APP_ICON"));
+        selectSetList.add(new SelectSet("FREEGIFT_ICON"));
+        selectSetList.add(new SelectSet("AD_KEYWORD"));
+        selectSetList.add(new SelectSet("VIDEO_GB_M"));
+        selectSetList.add(new SelectSet("VIDEO_VAL_M"));
+        selectSetList.add(new SelectSet("VIDEO_GB_S"));
+        selectSetList.add(new SelectSet("VIDEO_VAL_S"));
+        selectSetList.add(new SelectSet("GOODS_GB_NM"));
+        selectSetList.add(new SelectSet("SEX_NM"));
+        selectSetList.add(new SelectSet("AGE_GRP_NM"));
+        selectSetList.add(new SelectSet("SEASON_NM"));
+        
+     
+        return selectSetList;
+    }
+	
+	public static ArrayList<WhereSet> getWhereSet(String searchTerm) {
+		ArrayList<WhereSet> WhereSetList = new ArrayList<WhereSet>();
+		
+		///////////////////////////////
+		if (!searchTerm.equals("")) {
+			WhereSetList.add(new WhereSet(Protocol.WhereSet.OP_BRACE_OPEN));
+			WhereSetList.add(new WhereSet("IDX_PLAN_NM", Protocol.WhereSet.OP_HASALL, searchTerm, 100));
+			WhereSetList.add(new WhereSet(Protocol.WhereSet.OP_OR));
+			WhereSetList.add(new WhereSet("IDX_PLAN_NM_BI", Protocol.WhereSet.OP_HASALL, searchTerm, 100));
+			WhereSetList.add(new WhereSet(Protocol.WhereSet.OP_BRACE_CLOSE));
+			WhereSetList.add(new WhereSet(Protocol.WhereSet.OP_AND));
+			WhereSetList.add(new WhereSet("IDX_PLAN_GB", Protocol.WhereSet.OP_HASALL, "E", 100));
+		}
+		
+		return WhereSetList;
+	}
+	
+	public static ArrayList<WhereSet> getGoodsWhereSet(String goods) {
+		ArrayList<WhereSet> WhereSetList = new ArrayList<WhereSet>();
+		
+		///////////////////////////////
+		if (!goods.equals("")) {
+			WhereSetList.add(new WhereSet(Protocol.WhereSet.OP_BRACE_OPEN));
+			WhereSetList.add(new WhereSet("IDX_GOODS_CD_WS", Protocol.WhereSet.OP_HASANY, goods));
+			WhereSetList.add(new WhereSet(Protocol.WhereSet.OP_BRACE_CLOSE));			
+		}
+		
+		return WhereSetList;
+	}
+	
+	public static OrderBySet []  getOrderBySet() {
+		
+        OrderBySet [] orderBySet = null;
+
+        orderBySet = new OrderBySet[1];
+        
+        orderBySet = new OrderBySet[] { new OrderBySet(false,"WEIGHT", Protocol.OrderBySet.OP_POSTWEIGHT)};
+        
+        return orderBySet;
+    }
+	
+	public static JSONObject planSearchApi(Map<String, Object> parameter) {
+		
+        //------- Parameter ---------------
+        String adminIp = (String)parameter.get("adminIp");					//Ip
+        int adminPort = (Integer)parameter.get("adminPort");					//Port
+        
+        int indexs = 0;
+        int counts = 5;
+        
+        String searchTerm = (String)parameter.get("searchTerm");if (searchTerm == null) {searchTerm = "";}				//Search Word
+        indexs = (Integer)parameter.get("indexs");
+        counts = (Integer)parameter.get("counts");
+        //------- Mariner API ----------------
+        int queryCount = 0;
+        
+        QuerySet querySet = new QuerySet(1);
+        QueryParser queryParser = new QueryParser();            //QueryParser
+        WhereSet [] whereSet = null;                            //WhereSet[]
+        SelectSet [] selectSet = null;                          //SelectSet[]
+        OrderBySet[] orderBySet = null;                         //OrderBySet[]
+        GroupBySet[] groupBySet = null;							//GroupBySet[]
+
+        int returnCode = -1;
+        
+        
+        CommandSearchRequest command = null;
+        
+        String startTag = "<Strong>";
+    	String endTag = "</Strong>";
+    	
+    	Query query =  new Query(startTag, endTag);
+        
+        ArrayList<SelectSet> selectSetList = null;
+        ArrayList<WhereSet> whereSetList = null;
+        SelectSet[] getSelectSetFiels = null;
+        
+        selectSetList = getSelectSet();
+        selectSet = new SelectSet[selectSetList.size()];
+        
+        for(int a=0;a<selectSetList.size();a++){
+        	selectSet[a] = selectSetList.get(a);
+        }
+        
+        //whereSet
+        whereSetList = getWhereSet(searchTerm);
+        whereSet = new WhereSet[whereSetList.size()];
+        
+        for(int b=0;b<whereSetList.size();b++){
+        	whereSet[b] = whereSetList.get(b);
+        }
+        orderBySet = getOrderBySet();		
+        query.setOrderby(orderBySet);
+        
+        query.setSelect(selectSet);
+        query.setWhere(whereSet);
+        query.setFrom("PLAN_EVENT");
+        query.setResult(0 , 6);					
+        query.setDebug(true);
+        query.setLoggable(true);
+        query.setSearchKeyword(searchTerm);
+        query.setThesaurusOption((byte) (Protocol.ThesaurusOption.EQUIV_SYNONYM | Protocol.ThesaurusOption.QUASI_SYNONYM));
+        query.setPrintQuery(true);
+        querySet.addQuery(query);
+        //System.out.println("##### query0= " + queryParser.queryToString(query0));
+        
+        //getSelectSetFiels = query.getSelectFields();
+        
+        
+        
+        //------- Result ------------------
+        Result[] resultlist = null;        
+        Map<String, Object> resultMap = null;
+        Result result = null;
+        String totalSize = "";
+        List<Map<String, Object>> List = null;
+        Map<String, String> totalMap = new HashMap<String, String>();			//검색 결과 개수
+        List<Map<String, String>> totalList = new ArrayList<Map<String, String>>();
+        Map<String, Map<String, String>> goodsMap = new HashMap<String, Map<String,String>>();
+        List<String> goodsList = new ArrayList<String>();
+        JSONObject resultJson = new JSONObject();
+        
+      //받은 파라미터 리스트에 넣기
+      	List<Map<String, Object>> parameterList = new ArrayList<Map<String,Object>>();
+      	Map<String, Object> parameterMap = new HashMap<String, Object>();
+      		
+      	parameterMap.put("adminIp", adminIp);
+      	parameterMap.put("adminPort", adminPort);
+      	parameterMap.put("searchTerm", searchTerm);
+      	parameterMap.put("indexs", indexs);
+      	parameterMap.put("counts", counts);
+      	parameterList.add(parameterMap);
+        
+        //---------------------------------
+        
+        
+        try {
+        	if (!searchTerm.equals("")) {
+        	}		
+        	command = new CommandSearchRequest(adminIp, adminPort);        		
+        	returnCode = command.request(querySet);
+//        		System.out.println("returnCode ########## : " + returnCode);
+        	if (returnCode > 0) {
+        		ResultSet results = command.getResultSet();
+        		resultlist = results.getResultList();
+        	}else{
+        		resultlist = new Result[1]; 
+        		resultlist[0] = new Result();
+        	}
+			
+		} catch (Exception e) {  
+			e.printStackTrace();
+		}
+		for (int k = 0; resultlist != null && k < resultlist.length; k++) {			
+			
+			result = resultlist[k];
+			List = new ArrayList<Map<String,Object>>();				
+			
+			if (result != null) {				
+				// total
+				totalSize = Integer.toString(result.getTotalSize());
+				totalMap.put("TOTAL", totalSize);								
+				// 검색결과
+				for (int i = 0; i < result.getRealSize(); i++) {
+					resultMap = new HashMap<String, Object>();					
+					for (int j = 0 ; j < result.getNumField(); j++) {
+						
+						resultMap.put(convert2CamelCase(new String(query.getSelectFields()[j].getField())), new String(result.getResult(i,j)));
+						
+						///// 검색결과 담기
+						if (new String(query.getSelectFields()[j].getField()).equals("GOODS_CD") && !new String(result.getResult(i,j)).equals("")) {
+							
+							if (!new String(result.getResult(i,j)).equals("")) {
+								parameter.put("goodsCd", new String(result.getResult(i,j)));
+								HashMap<String, Object> searchReturn = goodsSearchApi(parameter);
+								resultMap.put("goodsSearch", searchReturn.get("result"));
+								
+							}
+						}
+					}
+					List.add(resultMap);
+				}
+			}
+			resultJson.put("result", List);
+			
+		}
+		
+//		if (result.getTotalSize() > 0) {
+//			
+//			for (int i = 0; i < goodsList.size(); i++) {
+//				
+//				if (!goodsList.get(i).equals("")) {
+//					
+//					parameter.put("goods", goodsList.get(i));
+//					System.out.println("gli : " + goodsList.get(i));
+//					HashMap<String, Object> searchReturn = goodsSearchApi(parameter);
+//					searchReturn.get("result");
+//					
+//					
+//					
+//				}
+//		
+//				//System.out.println("result"+searchReturn.get("result"));
+//			}
+//		}
+		
+		resultJson.put("totalSize", totalSize);						
+		resultJson.put("parameterList", parameterList);						
+		totalList.add(totalMap);		
+        
+		System.out.println("resultJson : "+resultJson);
+        return resultJson;
+    }
+	
+	public static JSONObject goodsSearchApi(Map<String, Object> parameter) {
+		
+        //------- Parameter ---------------
+        String adminIp = (String)parameter.get("adminIp");					//Ip
+        int adminPort = (Integer)parameter.get("adminPort");					//Port
+        
+        String goodsCd = (String)parameter.get("goodsCd");				//Search Word
+        
+        goodsCd = goodsCd.replace(",", " ");
+        //------- Mariner API ----------------
+        int queryCount = 0;
+        
+        QuerySet querySet = new QuerySet(1);
+        QueryParser queryParser = new QueryParser();            //QueryParser
+        WhereSet [] whereSet = null;                            //WhereSet[]
+        SelectSet [] selectSet = null;                          //SelectSet[]
+        OrderBySet[] orderBySet = null;                         //OrderBySet[]
+        GroupBySet[] groupBySet = null;							//GroupBySet[]
+
+        int returnCode = -1;
+        int indexs = 0;
+        int counts = 5;
+        
+        CommandSearchRequest command = null;
+        
+        String startTag = "<Strong>";
+    	String endTag = "</Strong>";
+    	
+    	Query query =  new Query(startTag, endTag);
+        
+        ArrayList<SelectSet> selectSetList = null;
+        ArrayList<WhereSet> whereSetList = null;
+        SelectSet[] getSelectSetFiels = null;
+        
+        selectSetList = getGoodsSelectSet();
+        selectSet = new SelectSet[selectSetList.size()];
+        
+        for(int a=0;a<selectSetList.size();a++){
+        	selectSet[a] = selectSetList.get(a);
+        }
+        
+        //whereSet
+        whereSetList = getGoodsWhereSet(goodsCd);
+        whereSet = new WhereSet[whereSetList.size()];
+        
+        for(int b=0;b<whereSetList.size();b++){
+        	whereSet[b] = whereSetList.get(b);
+        }
+         
+        orderBySet = getOrderBySet();		
+        query.setOrderby(orderBySet);
+        
+        query.setSelect(selectSet);
+        query.setWhere(whereSet);
+        query.setFrom("GOODS");
+        query.setResult(0 , 3);					
+        query.setDebug(true);
+        query.setLoggable(false);
+        //query.setSearchKeyword();
+        query.setThesaurusOption((byte) (Protocol.ThesaurusOption.EQUIV_SYNONYM | Protocol.ThesaurusOption.QUASI_SYNONYM));
+        query.setPrintQuery(true);
+        querySet.addQuery(query);
+        //System.out.println("##### query0= " + queryParser.queryToString(query0));
+        
+        getSelectSetFiels = query.getSelectFields();
+        
+        
+        
+        //------- Result ------------------
+        Result[] resultlist = null;        
+        Map<String, String> resultMap = null;
+        Map<String, String> GresultMap = null;
+        Result result = null;
+        String totalSize = "";
+        List<Map<String, String>> List = null;
+        Map<String, String> totalMap = new HashMap<String, String>();			//검색 결과 개수
+        JSONObject resultJson = new JSONObject();
+        
+        //---------------------------------
+        
+        
+        try {
+        	if (!goodsCd.equals("")) {
+	        	command = new CommandSearchRequest(adminIp, adminPort);        		
+	        	returnCode = command.request(querySet);
+	//        		System.out.println("returnCode ########## : " + returnCode);
+	        	if (returnCode > 0) {
+	        		ResultSet results = command.getResultSet();
+	        		resultlist = results.getResultList();
+	        	}else{
+	        		resultlist = new Result[1]; 
+	        		resultlist[0] = new Result();
+	        	}
+        	}		
+			
+		} catch (Exception e) {  
+			e.printStackTrace();
+		}
+       
+		for (int k = 0; resultlist != null && k < resultlist.length; k++) {			
+			
+			result = resultlist[k];
+			List = new ArrayList<Map<String,String>>();				
+			
+			if (result != null) {				
+				// total
+				totalSize = Integer.toString(result.getTotalSize());
+		
+				totalMap.put("TOTAL", totalSize);								
+				// 검색결과
+				for (int i = 0; i < result.getRealSize(); i++) {
+					resultMap = new HashMap<String, String>();					
+					for (int j = 0 ; j < result.getNumField(); j++) {
+						resultMap.put(convert2CamelCase(new String(getSelectSetFiels[j].getField())), new String(result.getResult(i,j)));
+						//resultMap.put(new String(getSelectSetFiels[j].getField()), new String(result.getResult(i,j)));
+					}
+					List.add(resultMap);
+				}
+			}
+			resultJson.put("result", List);
+		}
+		
+		
+        return resultJson;
+    }
+
+	public static  String convert2CamelCase(String underScore) {
+
+		 
+
+        // '_' 가 나타나지 않으면 이미 camel case 로 가정함.
+
+        // 단 첫째문자가 대문자이면 camel case 변환 (전체를 소문자로) 처리가
+
+        // 필요하다고 가정함. --> 아래 로직을 수행하면 바뀜
+
+        if (underScore.indexOf('_') < 0
+
+            && Character.isLowerCase(underScore.charAt(0))) {
+
+            return underScore;
+
+        }
+
+        StringBuilder result = new StringBuilder();
+
+        boolean nextUpper = false;
+
+        int len = underScore.length();
+
+ 
+
+        for (int i = 0; i < len; i++) {
+
+            char currentChar = underScore.charAt(i);
+
+            if (currentChar == '_') {
+
+                nextUpper = true;
+
+            } else {
+
+                if (nextUpper) {
+
+                    result.append(Character.toUpperCase(currentChar));
+
+                    nextUpper = false;
+
+                } else {
+
+                    result.append(Character.toLowerCase(currentChar));
+
+                }
+
+            }
+
+        }
+
+        return result.toString();
+
+    }
+	
+}
+

BIN
산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210412/autoPlanSearch.jar


BIN
산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210412/m4_client.jar


BIN
산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210412/m4_common.jar


BIN
산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210412/m4_util.jar


BIN
산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210412/검색API 정의서_v0.4.1_20210412.docx


BIN
산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210416.zip


BIN
산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210416/Search.jar


BIN
산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210416/json_simple-1.1.jar


BIN
산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210416/m4_client.jar


BIN
산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210416/m4_common.jar


BIN
산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210416/m4_util.jar


BIN
산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/20210416/검색API 정의서_v0.5.1_20210416.docx


BIN
산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/210423.zip


BIN
산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/210423/Istyle.jar


BIN
산출물/3.설계/03.인터페이스/검색엔진/NHN다이퀘스트/소스/210423/아이스타일_검색API_가이드_v.1.0.docx