List of usage examples for org.apache.lucene.document FloatPoint newRangeQuery
public static Query newRangeQuery(String field, float[] lowerValue, float[] upperValue)
From source file:com.epam.catgenome.entity.vcf.VcfFilterForm.java
License:Open Source License
private void addQualityFilter(BooleanQuery.Builder builder) { if (quality != null && !quality.isEmpty()) { if (quality.size() < 2) { builder.add(FloatPoint.newExactQuery(FeatureIndexFields.QUALITY.getFieldName(), quality.get(0)), BooleanClause.Occur.MUST); } else {/*from ww w. jav a 2s. c om*/ Assert.isTrue(quality.get(0) != null || quality.get(1) != null, "Incorrect filter parameter:" + " quality:[null, null]"); builder.add( FloatPoint.newRangeQuery(FeatureIndexFields.QUALITY.getFieldName(), quality.get(0) != null ? quality.get(0) : Float.MIN_VALUE, quality.get(1) != null ? quality.get(1) : Float.MAX_VALUE), BooleanClause.Occur.MUST); } } }
From source file:com.epam.catgenome.entity.vcf.VcfFilterForm.java
License:Open Source License
private void tryAddFloatingKeyFalueFilter(BooleanQuery.Builder builder, Map.Entry<String, Object> entry, String key, List list, Object val) { if (val instanceof Float || entry.getValue() instanceof Double) { builder.add(FloatPoint.newRangeQuery(key, list.get(0) != null ? (Float) list.get(0) : Float.MIN_VALUE, list.get(1) != null ? (Float) list.get(1) : Float.MAX_VALUE), BooleanClause.Occur.MUST); }/*from w w w . j a v a2 s . c om*/ }
From source file:org.apache.solr.schema.FloatPointField.java
License:Apache License
@Override public Query getPointRangeQuery(QParser parser, SchemaField field, String min, String max, boolean minInclusive, boolean maxInclusive) { float actualMin, actualMax; if (min == null) { actualMin = Float.NEGATIVE_INFINITY; } else {// ww w. j a va 2s . co m actualMin = Float.parseFloat(min); if (!minInclusive) { actualMin = FloatPoint.nextUp(actualMin); } } if (max == null) { actualMax = Float.POSITIVE_INFINITY; } else { actualMax = Float.parseFloat(max); if (!maxInclusive) { actualMax = FloatPoint.nextDown(actualMax); } } return FloatPoint.newRangeQuery(field.getName(), actualMin, actualMax); }
From source file:sh.isaac.provider.query.lucene.indexers.SemanticIndexer.java
License:Apache License
/** * Builds the numeric query.// w w w . ja va 2 s . c o m * * @param queryDataLower the query data lower * @param queryDataLowerInclusive the query data lower inclusive * @param queryDataUpper the query data upper * @param queryDataUpperInclusive the query data upper inclusive * @param columnName the column name * @return the query */ private Query buildNumericQuery(DynamicData queryDataLower, DynamicData queryDataUpper, String columnName) { // Convert both to the same type (if they differ) - go largest data type to smallest, so we don't lose precision // Also - if they pass in longs that would fit in an int, also generate an int query. // likewise, with Double - if they pass in a double, that would fit in a float, also generate a float query. try { final BooleanQuery.Builder bqBuilder = new BooleanQuery.Builder(); boolean fitsInFloat = false; boolean fitsInInt = false; if ((queryDataLower instanceof DynamicDouble) || (queryDataUpper instanceof DynamicDouble)) { final Double upperVal = ((queryDataUpper == null) ? null : ((queryDataUpper instanceof DynamicDouble) ? ((DynamicDouble) queryDataUpper).getDataDouble() : ((Number) queryDataUpper.getDataObject()).doubleValue())); final Double lowerVal = ((queryDataLower == null) ? null : ((queryDataLower instanceof DynamicDouble) ? ((DynamicDouble) queryDataLower).getDataDouble() : ((Number) queryDataLower.getDataObject()).doubleValue())); bqBuilder.add(DoublePoint.newRangeQuery(columnName, lowerVal, upperVal), Occur.SHOULD); if (((upperVal != null) && (upperVal <= Float.MAX_VALUE) && (upperVal >= Float.MIN_VALUE)) || ((lowerVal != null) && (lowerVal <= Float.MAX_VALUE) && (lowerVal >= Float.MIN_VALUE))) { fitsInFloat = true; } } if (fitsInFloat || (queryDataLower instanceof DynamicFloat) || (queryDataUpper instanceof DynamicFloat)) { final Float upperVal = ((queryDataUpper == null) ? null : ((queryDataUpper == null) ? null : ((queryDataUpper instanceof DynamicFloat) ? ((DynamicFloat) queryDataUpper).getDataFloat() : ((fitsInFloat && ((Number) queryDataUpper.getDataObject()) .doubleValue() > Float.MAX_VALUE) ? Float.MAX_VALUE : ((Number) queryDataUpper.getDataObject()) .floatValue())))); final Float lowerVal = ((queryDataLower == null) ? null : ((queryDataLower instanceof DynamicFloat) ? ((DynamicFloat) queryDataLower).getDataFloat() : ((fitsInFloat && ((Number) queryDataLower.getDataObject()) .doubleValue() < Float.MIN_VALUE) ? Float.MIN_VALUE : ((Number) queryDataLower.getDataObject()).floatValue()))); bqBuilder.add(FloatPoint.newRangeQuery(columnName, lowerVal, upperVal), Occur.SHOULD); } if ((queryDataLower instanceof DynamicLong) || (queryDataUpper instanceof DynamicLong)) { final Long upperVal = ((queryDataUpper == null) ? null : ((queryDataUpper instanceof DynamicLong) ? ((DynamicLong) queryDataUpper).getDataLong() : ((Number) queryDataUpper.getDataObject()).longValue())); final Long lowerVal = ((queryDataLower == null) ? null : ((queryDataLower instanceof DynamicLong) ? ((DynamicLong) queryDataLower).getDataLong() : ((Number) queryDataLower.getDataObject()).longValue())); bqBuilder.add(LongPoint.newRangeQuery(columnName, lowerVal, upperVal), Occur.SHOULD); if (((upperVal != null) && (upperVal <= Integer.MAX_VALUE) && (upperVal >= Integer.MIN_VALUE)) || ((lowerVal != null) && (lowerVal <= Integer.MAX_VALUE) && (lowerVal >= Integer.MIN_VALUE))) { fitsInInt = true; } } if (fitsInInt || (queryDataLower instanceof DynamicInteger) || (queryDataUpper instanceof DynamicInteger) || (queryDataLower instanceof DynamicSequence) || (queryDataUpper instanceof DynamicSequence)) { final Integer upperVal = ((queryDataUpper == null) ? null : ((queryDataUpper instanceof DynamicInteger) ? ((DynamicInteger) queryDataUpper).getDataInteger() : ((queryDataUpper instanceof DynamicSequence) ? ((DynamicSequence) queryDataUpper).getDataSequence() : ((fitsInInt && ((Number) queryDataUpper.getDataObject()) .longValue() > Integer.MAX_VALUE) ? Integer.MAX_VALUE : ((Number) queryDataUpper.getDataObject()).intValue())))); final Integer lowerVal = ((queryDataLower == null) ? null : ((queryDataLower instanceof DynamicInteger) ? ((DynamicInteger) queryDataLower).getDataInteger() : ((queryDataLower instanceof DynamicSequence) ? ((DynamicSequence) queryDataLower).getDataSequence() : ((fitsInInt && ((Number) queryDataLower.getDataObject()) .longValue() < Integer.MIN_VALUE) ? Integer.MIN_VALUE : ((Number) queryDataLower.getDataObject()).intValue())))); bqBuilder.add(IntPoint.newRangeQuery(columnName, lowerVal, upperVal), Occur.SHOULD); } BooleanQuery bq = bqBuilder.build(); if (bq.clauses().isEmpty()) { throw new RuntimeException("Not a numeric data type - can't perform a range query"); } else { final BooleanQuery.Builder must = new BooleanQuery.Builder(); must.add(bq, Occur.MUST); return must.build(); } } catch (final ClassCastException e) { throw new RuntimeException( "One of the values is not a numeric data type - can't perform a range query"); } }