...
|
...
|
@@ -19,7 +19,10 @@ public class ExtendFilterHelper { |
|
|
* @return
|
|
|
*/
|
|
|
public static QueryBuilder addFlowFilter (){
|
|
|
return QueryBuilders.termQuery(ProductIndexEsField.flowType, "1");
|
|
|
BoolQueryBuilder filter = QueryBuilders.boolQuery();
|
|
|
filter.must(QueryBuilders.termQuery(ProductIndexEsField.flowType, "1"));
|
|
|
filter.mustNot(QueryBuilders.rangeQuery(ProductIndexEsField.breakSizePercent).gt(50));
|
|
|
return filter;
|
|
|
}
|
|
|
|
|
|
/**
|
...
|
...
|
@@ -27,7 +30,10 @@ public class ExtendFilterHelper { |
|
|
* @return
|
|
|
*/
|
|
|
public static QueryBuilder directTrainFilter (){
|
|
|
return QueryBuilders.termQuery(ProductIndexEsField.toAddScore, "Y");
|
|
|
BoolQueryBuilder filter = QueryBuilders.boolQuery();
|
|
|
filter.must(QueryBuilders.termQuery(ProductIndexEsField.toAddScore, "Y"));
|
|
|
filter.mustNot(QueryBuilders.rangeQuery(ProductIndexEsField.breakSizePercent).gt(50));
|
|
|
return filter;
|
|
|
}
|
|
|
|
|
|
/**
|
...
|
...
|
@@ -46,6 +52,7 @@ public class ExtendFilterHelper { |
|
|
return QueryBuilders.termQuery(ProductIndexEsField.productSkn, productSkn);
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 新开店铺的过滤器-开店时间30天内,非流量惩罚的
|
|
|
* @return
|
...
|
...
|
@@ -55,9 +62,7 @@ public class ExtendFilterHelper { |
|
|
//must
|
|
|
filter.must(QueryBuilders.rangeQuery(ProductIndexEsField.shopCreateTime).gte(DateUtil.getFirstTimeSecond(DateUtil.addDay(new Date(), -30))));
|
|
|
//must not
|
|
|
filter.mustNot(forbiddenFlowFilter());
|
|
|
filter.mustNot(isGlobalFilter());
|
|
|
filter.mustNot(breakSizeFilter());
|
|
|
filter.mustNot(notRecallFilter());
|
|
|
return filter;
|
|
|
}
|
|
|
|
...
|
...
|
@@ -69,55 +74,51 @@ public class ExtendFilterHelper { |
|
|
return null;
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 【品类+品牌】新品
|
|
|
* 【品类+品牌】人气-【除去新品,新降价和新开促销】
|
|
|
* @return
|
|
|
*/
|
|
|
public static QueryBuilder sortBrandNewFilter (SortBrand sortBrand){
|
|
|
public static QueryBuilder sortBrandHeatValue (SortBrand sortBrand){
|
|
|
BoolQueryBuilder filter = QueryBuilders.boolQuery();
|
|
|
//must
|
|
|
filter.must(sortBrandIdFilter(sortBrand));
|
|
|
filter.must(newFilter());
|
|
|
//must not
|
|
|
filter.mustNot(forbiddenFlowFilter());
|
|
|
filter.mustNot(notRecallFilter());
|
|
|
filter.mustNot(newFilter());
|
|
|
filter.mustNot(latestReducePriceFilter());
|
|
|
filter.mustNot(isGlobalFilter());
|
|
|
filter.mustNot(breakSizeFilter());
|
|
|
filter.mustNot(isNewPromotionFilter());
|
|
|
return filter;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 【品类+品牌】新降价
|
|
|
* 【品类+品牌】新品
|
|
|
* @return
|
|
|
*/
|
|
|
public static QueryBuilder sortBrandReducePrice (SortBrand sortBrand){
|
|
|
public static QueryBuilder sortBrandNewFilter (SortBrand sortBrand){
|
|
|
BoolQueryBuilder filter = QueryBuilders.boolQuery();
|
|
|
//must
|
|
|
filter.must(sortBrandIdFilter(sortBrand));
|
|
|
filter.must(latestReducePriceFilter());
|
|
|
filter.must(newFilter());
|
|
|
//must not
|
|
|
filter.mustNot(forbiddenFlowFilter());
|
|
|
filter.mustNot(newFilter());
|
|
|
filter.mustNot(isGlobalFilter());
|
|
|
filter.mustNot(breakSizeFilter());
|
|
|
filter.mustNot(notRecallFilter());
|
|
|
filter.mustNot(latestReducePriceFilter());
|
|
|
filter.mustNot(isNewPromotionFilter());
|
|
|
return filter;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 【品类+品牌】人气
|
|
|
* 【品类+品牌】新降价
|
|
|
* @return
|
|
|
*/
|
|
|
public static QueryBuilder sortBrandHeatValue (SortBrand sortBrand){
|
|
|
public static QueryBuilder sortBrandReducePrice (SortBrand sortBrand){
|
|
|
BoolQueryBuilder filter = QueryBuilders.boolQuery();
|
|
|
//must
|
|
|
filter.must(sortBrandIdFilter(sortBrand));
|
|
|
filter.must(latestReducePriceFilter());
|
|
|
//must not
|
|
|
filter.mustNot(forbiddenFlowFilter());
|
|
|
filter.mustNot(notRecallFilter());
|
|
|
filter.mustNot(newFilter());
|
|
|
filter.mustNot(latestReducePriceFilter());
|
|
|
filter.mustNot(isGlobalFilter());
|
|
|
filter.mustNot(breakSizeFilter());
|
|
|
filter.mustNot(isNewPromotionFilter());
|
|
|
return filter;
|
|
|
}
|
|
|
|
...
|
...
|
@@ -131,29 +132,12 @@ public class ExtendFilterHelper { |
|
|
filter.must(sortBrandIdFilter(sortBrand));
|
|
|
filter.must(isNewPromotionFilter());
|
|
|
//must not
|
|
|
filter.mustNot(forbiddenFlowFilter());
|
|
|
filter.mustNot(notRecallFilter());
|
|
|
filter.mustNot(newFilter());
|
|
|
filter.mustNot(latestReducePriceFilter());
|
|
|
filter.mustNot(isGlobalFilter());
|
|
|
filter.mustNot(breakSizeFilter());
|
|
|
return filter;
|
|
|
}
|
|
|
|
|
|
private static QueryBuilder forbiddenFlowFilter (){
|
|
|
return QueryBuilders.termQuery(ProductIndexEsField.flowType, "2");
|
|
|
}
|
|
|
|
|
|
private static QueryBuilder isGlobalFilter (){
|
|
|
return QueryBuilders.termQuery(ProductIndexEsField.isGlobal, "Y");
|
|
|
}
|
|
|
|
|
|
private static QueryBuilder newFilter (){
|
|
|
return QueryBuilders.termsQuery(ProductIndexEsField.isnew,"Y");
|
|
|
}
|
|
|
|
|
|
private static QueryBuilder breakSizeFilter (){
|
|
|
return QueryBuilders.rangeQuery(ProductIndexEsField.breakSizePercent).gt(50);
|
|
|
}
|
|
|
|
|
|
private static QueryBuilder sortBrandIdFilter (SortBrand sortBrand){
|
|
|
BoolQueryBuilder filter = QueryBuilders.boolQuery();
|
...
|
...
|
@@ -162,12 +146,17 @@ public class ExtendFilterHelper { |
|
|
return filter;
|
|
|
}
|
|
|
|
|
|
|
|
|
private static final List<String> PromotionsTypes = Arrays.asList("Cashreduce", "Cheapestfree", "Degressdiscount", "Discount", "SpecifiedAmount");
|
|
|
|
|
|
private static QueryBuilder newFilter (){
|
|
|
return QueryBuilders.termsQuery(ProductIndexEsField.isnew,"Y");
|
|
|
}
|
|
|
|
|
|
private static QueryBuilder latestReducePriceFilter (){
|
|
|
return QueryBuilders.termQuery(ProductIndexEsField.isLatestReducePrice, "Y");
|
|
|
}
|
|
|
|
|
|
private static final List<String> PromotionsTypes = Arrays.asList("Cashreduce", "Cheapestfree", "Degressdiscount", "Discount", "SpecifiedAmount");
|
|
|
|
|
|
private static QueryBuilder isNewPromotionFilter (){
|
|
|
BoolQueryBuilder nestedFilter = QueryBuilders.boolQuery();
|
|
|
long hourFirstTime = DateUtil.getHourFirstTimeSecond(new Date());
|
...
|
...
|
@@ -177,4 +166,16 @@ public class ExtendFilterHelper { |
|
|
return QueryBuilders.nestedQuery(ProductIndexEsField.matchedPromotions, nestedFilter, ScoreMode.None);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 不召回的过滤条件
|
|
|
* @return
|
|
|
*/
|
|
|
public static QueryBuilder notRecallFilter(){
|
|
|
BoolQueryBuilder filter = QueryBuilders.boolQuery();
|
|
|
filter.should(QueryBuilders.termQuery(ProductIndexEsField.flowType, "2"));
|
|
|
filter.should(QueryBuilders.termQuery(ProductIndexEsField.isGlobal, "Y"));
|
|
|
filter.should(QueryBuilders.rangeQuery(ProductIndexEsField.breakSizePercent).gt(50));
|
|
|
return filter;
|
|
|
}
|
|
|
|
|
|
} |
...
|
...
|
|