@Override public RangeTerminationExcludable excludeLimit() { if ( rangeContext.getFrom() != null && rangeContext.getTo() != null ) { rangeContext.setExcludeTo( true ); } else if ( rangeContext.getFrom() != null ) { rangeContext.setExcludeFrom( true ); } else if ( rangeContext.getTo() != null ) { rangeContext.setExcludeTo( true ); } else { throw new AssertionFailure( "Both from and to clause of a range query are null" ); } return this; }
@Override public RangeTerminationExcludable excludeLimit() { if ( rangeContext.getFrom() != null && rangeContext.getTo() != null ) { rangeContext.setExcludeTo( true ); } else if ( rangeContext.getFrom() != null ) { rangeContext.setExcludeFrom( true ); } else if ( rangeContext.getTo() != null ) { rangeContext.setExcludeTo( true ); } else { throw new AssertionFailure( "Both from and to clause of a range query are null" ); } return this; }
private static Query createNumericRangeQuery(String fieldName, RangeQueryContext rangeContext) { return NumericFieldUtils.createNumericRangeQuery( fieldName, rangeContext.getFrom(), rangeContext.getTo(), !rangeContext.isExcludeFrom(), !rangeContext.isExcludeTo() ); } }
private static Query createNumericRangeQuery(String fieldName, RangeQueryContext rangeContext) { return NumericFieldUtils.createNumericRangeQuery( fieldName, rangeContext.getFrom(), rangeContext.getTo(), !rangeContext.isExcludeFrom(), !rangeContext.isExcludeTo() ); } }
private Query createQuery(FieldContext fieldContext, ConversionContext conversionContext) { final Query perFieldQuery; final String fieldName = fieldContext.getField(); final DocumentBuilderIndexedEntity documentBuilder = queryContext.getDocumentBuilder(); if ( Helper.requiresNumericQuery( documentBuilder, fieldContext, rangeContext.getFrom(), rangeContext.getTo() ) ) { perFieldQuery = createNumericRangeQuery( fieldName, rangeContext ); } else { perFieldQuery = createKeywordRangeQuery( fieldName, rangeContext, queryContext, conversionContext, fieldContext ); } return fieldContext.getFieldCustomizer().setWrappedQuery( perFieldQuery ).createQuery(); }
private Query createQuery(FieldContext fieldContext, ConversionContext conversionContext) { final Query perFieldQuery; final String fieldName = fieldContext.getField(); final DocumentBuilderIndexedEntity documentBuilder = queryContext.getDocumentBuilder(); if ( Helper.requiresNumericQuery( documentBuilder, fieldContext, rangeContext.getFrom(), rangeContext.getTo() ) ) { perFieldQuery = createNumericRangeQuery( fieldName, rangeContext ); } else { perFieldQuery = createKeywordRangeQuery( fieldName, rangeContext, queryContext, conversionContext, fieldContext ); } return fieldContext.getFieldCustomizer().setWrappedQuery( perFieldQuery ).createQuery(); }
private static Query createKeywordRangeQuery(String fieldName, RangeQueryContext rangeContext, QueryBuildingContext queryContext, ConversionContext conversionContext, FieldContext fieldContext) { final AnalyzerReference analyzerReference = queryContext.getQueryAnalyzerReference(); final DocumentBuilderIndexedEntity documentBuilder = queryContext.getDocumentBuilder(); final String fromString = rangeContext.hasFrom() ? fieldContext.objectToString( documentBuilder, rangeContext.getFrom(), conversionContext ) : null; final String toString = rangeContext.hasTo() ? fieldContext.objectToString( documentBuilder, rangeContext.getTo(), conversionContext ) : null; String lowerTerm; String upperTerm; if ( analyzerReference.is( LuceneAnalyzerReference.class ) ) { final Analyzer queryAnalyzer = analyzerReference.unwrap( LuceneAnalyzerReference.class ).getAnalyzer(); lowerTerm = fromString == null ? null : Helper.getAnalyzedTerm( fieldName, fromString, "from", queryAnalyzer, fieldContext ); upperTerm = toString == null ? null : Helper.getAnalyzedTerm( fieldName, toString, "to", queryAnalyzer, fieldContext ); } else { lowerTerm = fromString == null ? null : fromString; upperTerm = toString == null ? null : toString; } return TermRangeQuery.newStringRange( fieldName, lowerTerm, upperTerm, !rangeContext.isExcludeFrom(), !rangeContext.isExcludeTo() ); }
private static Query createKeywordRangeQuery(String fieldName, RangeQueryContext rangeContext, QueryBuildingContext queryContext, ConversionContext conversionContext, FieldContext fieldContext) { final AnalyzerReference analyzerReference = queryContext.getQueryAnalyzerReference(); final DocumentBuilderIndexedEntity documentBuilder = queryContext.getDocumentBuilder(); final String fromString = rangeContext.hasFrom() ? fieldContext.objectToString( documentBuilder, rangeContext.getFrom(), conversionContext ) : null; final String toString = rangeContext.hasTo() ? fieldContext.objectToString( documentBuilder, rangeContext.getTo(), conversionContext ) : null; String lowerTerm; String upperTerm; if ( analyzerReference.is( LuceneAnalyzerReference.class ) ) { final Analyzer queryAnalyzer = analyzerReference.unwrap( LuceneAnalyzerReference.class ).getAnalyzer(); lowerTerm = fromString == null ? null : Helper.getAnalyzedTerm( fieldName, fromString, "from", queryAnalyzer, fieldContext ); upperTerm = toString == null ? null : Helper.getAnalyzedTerm( fieldName, toString, "to", queryAnalyzer, fieldContext ); } else { lowerTerm = fromString == null ? null : fromString; upperTerm = toString == null ? null : toString; } return TermRangeQuery.newStringRange( fieldName, lowerTerm, upperTerm, !rangeContext.isExcludeFrom(), !rangeContext.isExcludeTo() ); }