package com.silverforge.elasticsearchrawclient.queryDSL.queries.innerQueries; import com.silverforge.elasticsearchrawclient.queryDSL.generator.QueryFactory; import com.silverforge.elasticsearchrawclient.queryDSL.operators.ZeroToOneRangeOperator; import com.silverforge.elasticsearchrawclient.queryDSL.Constants; import com.silverforge.elasticsearchrawclient.model.QueryTypeItem; import com.silverforge.elasticsearchrawclient.definition.Queryable; import com.silverforge.elasticsearchrawclient.utils.QueryTypeArrayList; public class BoostingQuery implements Queryable { private QueryTypeArrayList<QueryTypeItem> queryBag = new QueryTypeArrayList<>(); public BoostingQuery(QueryTypeArrayList<QueryTypeItem> queryBag) { this.queryBag = queryBag; } public static BoostingQueryBuilder builder() { return new BoostingQueryBuilder(); } @Override public String getQueryString() { return QueryFactory .boostingQueryGenerator() .generate(queryBag); } public static class BoostingQueryBuilder { private QueryTypeArrayList<QueryTypeItem> queryBag = new QueryTypeArrayList<>(); public BoostingQueryBuilder positive(Queryable... queries) { queryBag.addItem(Constants.POSITIVE, queries); return this; } public BoostingQueryBuilder negative(Queryable... queries) { queryBag.addItem(Constants.NEGATIVE, queries); return this; } public BoostingQueryBuilder negativeBoost(ZeroToOneRangeOperator negativeBoostOperator) { String value = negativeBoostOperator.toString(); queryBag.addItem(Constants.NEGATIVE_BOOST, value); return this; } public BoostingQuery build() { return new BoostingQuery(queryBag); } } }