blob: 88f227d588273596490fb37376a34ca110b74b5b [file] [log] [blame]
/* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
parcel Lucy;
/** Match a range of values.
*
* RangeQuery matches documents where the value for a particular field falls
* within a given range.
*/
class Lucy::Search::RangeQuery inherits Lucy::Search::Query
: dumpable {
CharBuf *field;
Obj *lower_term;
Obj *upper_term;
bool_t include_lower;
bool_t include_upper;
inert incremented RangeQuery*
new(const CharBuf *field, Obj *lower_term = NULL, Obj *upper_term = NULL,
bool_t include_lower = true, bool_t include_upper = true);
/** Takes 5 parameters; <code>field</code> is required, as
* is at least one of either <code>lower_term</code> or
* <code>upper_term</code>.
*
* @param field The name of a <code>sortable</code> field.
* @param lower_term Lower delimiter. If not supplied, all values
* less than <code>upper_term</code> will pass.
* @param upper_term Upper delimiter. If not supplied, all values greater
* than <code>lower_term</code> will pass.
* @param include_lower Indicates whether docs which match
* <code>lower_term</code> should be included in the results.
* @param include_upper Indicates whether docs which match
* <code>upper_term</code> should be included in the results.
*/
public inert RangeQuery*
init(RangeQuery *self, const CharBuf *field,
Obj *lower_term = NULL, Obj *upper_term = NULL,
bool_t include_lower = true, bool_t include_upper = true);
public bool_t
Equals(RangeQuery *self, Obj *other);
public incremented CharBuf*
To_String(RangeQuery *self);
public incremented RangeCompiler*
Make_Compiler(RangeQuery *self, Searcher *searcher, float boost);
public void
Serialize(RangeQuery *self, OutStream *outstream);
public incremented RangeQuery*
Deserialize(RangeQuery *self, InStream *instream);
public void
Destroy(RangeQuery *self);
}
class Lucy::Search::RangeCompiler inherits Lucy::Search::Compiler {
inert incremented RangeCompiler*
new(RangeQuery *parent, Searcher *searcher, float boost);
inert RangeCompiler*
init(RangeCompiler *self, RangeQuery *parent, Searcher *searcher,
float boost);
public incremented nullable Matcher*
Make_Matcher(RangeCompiler *self, SegReader *reader, bool_t need_score);
public incremented RangeCompiler*
Deserialize(RangeCompiler *self, InStream *instream);
}