diff --git a/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedMoreLikeThisQueryBuilder.java b/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedMoreLikeThisQueryBuilder.java index 1c558c167c1..8c121e8be8d 100644 --- a/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedMoreLikeThisQueryBuilder.java +++ b/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedMoreLikeThisQueryBuilder.java @@ -67,7 +67,7 @@ public enum INPUT_TYPE { public Query createQuery() { Query query; final ExtendedSearchIntegrator searchIntegrator = queryContext.getFactory(); - final DocumentBuilderIndexedEntity documentBuilder = Helper.getDocumentBuilder( queryContext ); + final DocumentBuilderIndexedEntity documentBuilder = queryContext.getDocumentBuilder(); IndexReader indexReader = searchIntegrator.getIndexReaderAccessor().open( queryContext.getEntityType() ); // retrieving the docId and building the more like this query form the term vectors must be using the same index reader try { diff --git a/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedMultiFieldsRangeQueryBuilder.java b/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedMultiFieldsRangeQueryBuilder.java index 0fd0300e3c9..a38b713d632 100644 --- a/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedMultiFieldsRangeQueryBuilder.java +++ b/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedMultiFieldsRangeQueryBuilder.java @@ -79,7 +79,7 @@ private Query createQuery(FieldContext fieldContext, ConversionContext conversio final Query perFieldQuery; final String fieldName = fieldContext.getField(); - final DocumentBuilderIndexedEntity documentBuilder = Helper.getDocumentBuilder( queryContext ); + final DocumentBuilderIndexedEntity documentBuilder = queryContext.getDocumentBuilder(); DocumentFieldMetadata fieldMetadata = documentBuilder.getTypeMetadata().getDocumentFieldMetadataFor( fieldName ); if ( fieldMetadata != null ) { if ( fieldMetadata.isNumeric() ) { @@ -114,7 +114,7 @@ else if ( to != null ) { private static Query createKeywordRangeQuery(String fieldName, RangeQueryContext rangeContext, QueryBuildingContext queryContext, ConversionContext conversionContext, FieldContext fieldContext) { final Analyzer queryAnalyzer = queryContext.getQueryAnalyzer(); - final DocumentBuilderIndexedEntity documentBuilder = Helper.getDocumentBuilder( queryContext ); + final DocumentBuilderIndexedEntity documentBuilder = queryContext.getDocumentBuilder(); final String fromString = rangeContext.hasFrom() ? fieldContext.objectToString( documentBuilder, rangeContext.getFrom(), conversionContext ) : null; diff --git a/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedMultiFieldsTermQueryBuilder.java b/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedMultiFieldsTermQueryBuilder.java index ac6b6434cd2..13bba9b2a8b 100644 --- a/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedMultiFieldsTermQueryBuilder.java +++ b/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedMultiFieldsTermQueryBuilder.java @@ -77,7 +77,7 @@ public Query createQuery() { private Query createQuery(FieldContext fieldContext, ConversionContext conversionContext) { final Query perFieldQuery; - final DocumentBuilderIndexedEntity documentBuilder = Helper.getDocumentBuilder( queryContext ); + final DocumentBuilderIndexedEntity documentBuilder = queryContext.getDocumentBuilder(); final boolean applyTokenization; FieldBridge fieldBridge = fieldContext.getFieldBridge() != null ? fieldContext.getFieldBridge() : documentBuilder.getBridge( fieldContext.getField() ); diff --git a/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedSpatialQueryBuilder.java b/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedSpatialQueryBuilder.java index d7bb905f1ac..d8b87553e9c 100644 --- a/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedSpatialQueryBuilder.java +++ b/engine/src/main/java/org/hibernate/search/query/dsl/impl/ConnectedSpatialQueryBuilder.java @@ -39,7 +39,7 @@ public Query createQuery() { } private Query createSpatialQuery() { - final DocumentBuilderIndexedEntity documentBuilder = Helper.getDocumentBuilder( queryContext ); + final DocumentBuilderIndexedEntity documentBuilder = queryContext.getDocumentBuilder(); //FIXME that will have to change probably but today, if someone uses latitude / longitude // we use boolean style spatial queries // and on coordinates field, use spatial hash query diff --git a/engine/src/main/java/org/hibernate/search/query/dsl/impl/FieldContext.java b/engine/src/main/java/org/hibernate/search/query/dsl/impl/FieldContext.java index 5860ebb0d4b..6284fdda1ac 100644 --- a/engine/src/main/java/org/hibernate/search/query/dsl/impl/FieldContext.java +++ b/engine/src/main/java/org/hibernate/search/query/dsl/impl/FieldContext.java @@ -25,7 +25,7 @@ public class FieldContext { public FieldContext(String field, QueryBuildingContext queryContext) { this.field = field; this.fieldCustomizer = new QueryCustomizer(); - isIdField = Helper.getDocumentBuilder( queryContext ).getIdKeywordName().equals( field ); + isIdField = queryContext.getDocumentBuilder().getIdKeywordName().equals( field ); } public String getField() { diff --git a/engine/src/main/java/org/hibernate/search/query/dsl/impl/Helper.java b/engine/src/main/java/org/hibernate/search/query/dsl/impl/Helper.java index 5c749db6bec..8f0b2db5c16 100644 --- a/engine/src/main/java/org/hibernate/search/query/dsl/impl/Helper.java +++ b/engine/src/main/java/org/hibernate/search/query/dsl/impl/Helper.java @@ -16,9 +16,6 @@ import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.tokenattributes.CharTermAttribute; -import org.hibernate.search.engine.integration.impl.ExtendedSearchIntegrator; -import org.hibernate.search.engine.spi.DocumentBuilderIndexedEntity; -import org.hibernate.search.engine.spi.EntityIndexBinding; import org.hibernate.search.exception.AssertionFailure; import org.hibernate.search.exception.SearchException; @@ -89,13 +86,4 @@ static List getAllTermsFromText(String fieldName, String localText, Anal return terms; } - static DocumentBuilderIndexedEntity getDocumentBuilder(QueryBuildingContext queryContext) { - final ExtendedSearchIntegrator factory = queryContext.getFactory(); - final Class type = queryContext.getEntityType(); - EntityIndexBinding indexBinding = factory.getIndexBinding( type ); - if ( indexBinding == null ) { - throw new AssertionFailure( "Class is not indexed: " + type ); - } - return indexBinding.getDocumentBuilder(); - } } diff --git a/engine/src/main/java/org/hibernate/search/query/dsl/impl/QueryBuildingContext.java b/engine/src/main/java/org/hibernate/search/query/dsl/impl/QueryBuildingContext.java index c1c339d5242..d429c3a5c23 100644 --- a/engine/src/main/java/org/hibernate/search/query/dsl/impl/QueryBuildingContext.java +++ b/engine/src/main/java/org/hibernate/search/query/dsl/impl/QueryBuildingContext.java @@ -9,6 +9,9 @@ import org.apache.lucene.analysis.Analyzer; import org.hibernate.search.engine.integration.impl.ExtendedSearchIntegrator; +import org.hibernate.search.engine.spi.DocumentBuilderIndexedEntity; +import org.hibernate.search.engine.spi.EntityIndexBinding; +import org.hibernate.search.exception.AssertionFailure; /** * Keep the query builder contextual information @@ -17,6 +20,7 @@ */ public class QueryBuildingContext { private final ExtendedSearchIntegrator factory; + private final DocumentBuilderIndexedEntity documentBuilder; private final Analyzer queryAnalyzer; private final Class entityType; @@ -24,12 +28,22 @@ public QueryBuildingContext(ExtendedSearchIntegrator factory, Analyzer queryAnal this.factory = factory; this.queryAnalyzer = queryAnalyzer; this.entityType = entityType; + + EntityIndexBinding indexBinding = factory.getIndexBinding( entityType ); + if ( indexBinding == null ) { + throw new AssertionFailure( "Class is not indexed: " + entityType ); + } + documentBuilder = indexBinding.getDocumentBuilder(); } public ExtendedSearchIntegrator getFactory() { return factory; } + public DocumentBuilderIndexedEntity getDocumentBuilder() { + return documentBuilder; + } + public Analyzer getQueryAnalyzer() { return queryAnalyzer; }