Search in sources :

Example 1 with SolrRangeQuery

use of org.apache.solr.query.SolrRangeQuery in project lucene-solr by apache.

the class FieldType method getRangeQuery.

/**
   * Returns a Query instance for doing range searches on this field type. {@link org.apache.solr.search.SolrQueryParser}
   * currently passes part1 and part2 as null if they are '*' respectively. minInclusive and maxInclusive are both true
   * currently by SolrQueryParser but that may change in the future. Also, other QueryParser implementations may have
   * different semantics.
   * <p>
   * Sub-classes should override this method to provide their own range query implementation. They should strive to
   * handle nulls in part1 and/or part2 as well as unequal minInclusive and maxInclusive parameters gracefully.
   *
   * @param parser       the {@link org.apache.solr.search.QParser} calling the method
   * @param field        the schema field
   * @param part1        the lower boundary of the range, nulls are allowed.
   * @param part2        the upper boundary of the range, nulls are allowed
   * @param minInclusive whether the minimum of the range is inclusive or not
   * @param maxInclusive whether the maximum of the range is inclusive or not
   *  @return a Query instance to perform range search according to given parameters
   *
   */
public Query getRangeQuery(QParser parser, SchemaField field, String part1, String part2, boolean minInclusive, boolean maxInclusive) {
    // TODO: change these all to use readableToIndexed/bytes instead (e.g. for unicode collation)
    final BytesRef miValue = part1 == null ? null : new BytesRef(toInternal(part1));
    final BytesRef maxValue = part2 == null ? null : new BytesRef(toInternal(part2));
    if (field.hasDocValues() && !field.indexed()) {
        return SortedSetDocValuesField.newRangeQuery(field.getName(), miValue, maxValue, minInclusive, maxInclusive);
    } else {
        SolrRangeQuery rangeQuery = new SolrRangeQuery(field.getName(), miValue, maxValue, minInclusive, maxInclusive);
        return rangeQuery;
    }
}
Also used : SolrRangeQuery(org.apache.solr.query.SolrRangeQuery) BytesRef(org.apache.lucene.util.BytesRef)

Example 2 with SolrRangeQuery

use of org.apache.solr.query.SolrRangeQuery in project lucene-solr by apache.

the class TextField method getRangeQuery.

@Override
public Query getRangeQuery(QParser parser, SchemaField field, String part1, String part2, boolean minInclusive, boolean maxInclusive) {
    Analyzer multiAnalyzer = getMultiTermAnalyzer();
    BytesRef lower = analyzeMultiTerm(field.getName(), part1, multiAnalyzer);
    BytesRef upper = analyzeMultiTerm(field.getName(), part2, multiAnalyzer);
    return new SolrRangeQuery(field.getName(), lower, upper, minInclusive, maxInclusive);
}
Also used : SolrRangeQuery(org.apache.solr.query.SolrRangeQuery) Analyzer(org.apache.lucene.analysis.Analyzer) BytesRef(org.apache.lucene.util.BytesRef)

Aggregations

BytesRef (org.apache.lucene.util.BytesRef)2 SolrRangeQuery (org.apache.solr.query.SolrRangeQuery)2 Analyzer (org.apache.lucene.analysis.Analyzer)1