Example usage for org.apache.lucene.document FloatPoint newRangeQuery

List of usage examples for org.apache.lucene.document FloatPoint newRangeQuery

Introduction

In this page you can find the example usage for org.apache.lucene.document FloatPoint newRangeQuery.

Prototype

public static Query newRangeQuery(String field, float[] lowerValue, float[] upperValue) 

Source Link

Document

Create a range query for n-dimensional float values.

Usage

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");
    }
}