}
}
if(any) {
logger.error("검색 할 수 없는 필드입니다. {} " , fieldName);
throw new CrescentInvalidRequestException("검색 할 수 없는 필드입니다. [" + fieldName + "]");
}
//range쿼리인 경우에는 RangeQuery 생성
if(isRangeQuery) {
//QueryParser qp = new QueryParser(Version.LUCENE_36, fieldName, analyzer);
String minValue = "";
String maxValue = "";
boolean isIncludeMin = false;
boolean isIncludeMax = false;
String[] splitQuery = userRequestQuery.split("TO");
logger.info("splitQuery : {}", Arrays.toString(splitQuery));
if(splitQuery.length != 2) {
logger.error("문법 오류 확인바랍니다. {} " , userRequestQuery);
throw new CrescentInvalidRequestException("문법 오류 확인바랍니다. [" + userRequestQuery + "]");
}
if(splitQuery[0].trim().startsWith("[")) {
isIncludeMin = true;
}
if(splitQuery[1].trim().endsWith("]")) {
isIncludeMax = true;
}
logger.debug("minInclude : {}, maxInclude : {}", isIncludeMin, isIncludeMax);
minValue = splitQuery[0].trim().substring(1);
maxValue = splitQuery[1].trim().substring(0, splitQuery[1].trim().length() - 1);
logger.debug("minValue : {}, maxValue : {}", minValue, maxValue);
boolean isNumeric = false;
isNumeric = StringUtils.isNumeric(minValue) && StringUtils.isNumeric(maxValue);
logger.debug("isLongField : {}", isLongField);
logger.debug("is numeric : {}", isNumeric);
Query query = null;
if(isAnalyzed) {
logger.error("범위검색 대상 field는 analyzed값이 false이어야 합니다. {} " , userRequestQuery);
throw new CrescentInvalidRequestException("범위검색 대상 field는 analyzed값이 false이어야 합니다. [" + userRequestQuery + "]");
}
if(isLongField && isNumeric) {
query = NumericRangeQuery.newLongRange(fieldName, Long.parseLong(minValue), Long.parseLong(maxValue), isIncludeMin, isIncludeMax);
} else if (!(isLongField && isNumeric)){
BytesRef minValBytes = new BytesRef(minValue);
BytesRef maxValBytes = new BytesRef(maxValue);
query = new TermRangeQuery(fieldName, minValBytes, maxValBytes, isIncludeMin, isIncludeMax);
} else {
logger.error("범위검색은 필드의 타입과 쿼리의 타입이 맞아야 합니다. {} " , userRequestQuery);
throw new CrescentInvalidRequestException("범위검색은 필드의 타입과 쿼리의 타입이 맞아야 합니다. [" + userRequestQuery + "]");
}
resultQuery.add(query, occur);
} else {