/*
* Hibernate Search, full-text search for your domain model
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.search.query.dsl.impl;
import org.hibernate.search.query.dsl.MoreLikeThisOpenedMatchingContext;
import org.hibernate.search.query.dsl.MoreLikeThisTerminalMatchingContext;
import org.hibernate.search.query.dsl.MoreLikeThisTermination;
import org.hibernate.search.query.dsl.MoreLikeThisToEntityContentAndTermination;
import static org.hibernate.search.query.dsl.impl.ConnectedMoreLikeThisQueryBuilder.INPUT_TYPE.ENTITY;
import static org.hibernate.search.query.dsl.impl.ConnectedMoreLikeThisQueryBuilder.INPUT_TYPE.ID;
/**
* @author Emmanuel Bernard
*/
public class ConnectedMoreLikeThisMatchingContext implements MoreLikeThisOpenedMatchingContext, MoreLikeThisTerminalMatchingContext {
private final QueryBuildingContext queryContext;
private final QueryCustomizer queryCustomizer;
private final MoreLikeThisQueryContext moreLikeThisContext;
private final FieldsContext fieldsContext;
public ConnectedMoreLikeThisMatchingContext(String[] fieldNames, MoreLikeThisQueryContext moreLikeThisContext, QueryCustomizer queryCustomizer, QueryBuildingContext queryContext) {
this.queryCustomizer = queryCustomizer;
this.queryContext = queryContext;
this.moreLikeThisContext = moreLikeThisContext;
this.fieldsContext = new FieldsContext( fieldNames, queryContext );
}
@Override
public MoreLikeThisOpenedMatchingContext andField(String fieldname) {
fieldsContext.add( fieldname );
return this;
}
@Override
public MoreLikeThisOpenedMatchingContext boostedTo(float boost) {
fieldsContext.boostedTo( boost );
return this;
}
@Override
public MoreLikeThisOpenedMatchingContext ignoreAnalyzer() {
fieldsContext.ignoreAnalyzer();
return this;
}
@Override
public MoreLikeThisOpenedMatchingContext ignoreFieldBridge() {
fieldsContext.ignoreFieldBridge();
return this;
}
@Override
public MoreLikeThisTermination toEntityWithId(Object id) {
return new ConnectedMoreLikeThisQueryBuilder.MoreLikeThisTerminationImpl(
id,
ID,
fieldsContext,
moreLikeThisContext,
queryCustomizer,
queryContext
);
}
@Override
public MoreLikeThisToEntityContentAndTermination toEntity(Object entity) {
return new ConnectedMoreLikeThisQueryBuilder.MoreLikeThisToEntityContentAndTerminationImpl(
entity,
ENTITY,
fieldsContext,
moreLikeThisContext,
queryCustomizer,
queryContext
);
}
}