Numbers
Bluge includes support indexing and searching numeric values. It is important to understand that one should only use the Numeric field type when one needs to perform NumericRange queries. If you only intend to perform exact matches, you should convert your number to a string representation and use the keyword
analyzer.
Indexing
To start we’ll create a document with identifier a
:
doc := bluge.NewDocument("a")
Now, let’s add a numeric value to this document:
doc.AddField(bluge.NewNumericField("age", 0.1))
The first argument to the NewNumericField
name is the field name age
. The second argument is the float64
value to be indexed.
NOTE: Because Bluge’s internal representation encodes float64
values, accurate encoding of type converted integer values is limited to ±253.
Searching
To search for documents containing a numeric value within a range, we use the NumericRangeQuery
. Here is an example, if we wanted to search for values greater than or equal to zero, and less than one:
q := NewNumericRangeQuery(0, 1)
The first argument is the minimum value (inclusive), and the second argument is the maximum value (exclusive). If you need to control the inclusive/exclusive boundaries, use the longer form:
NewNumericRangeInclusiveQuery(min, max float64, minInclusive, maxInclusive bool)
Partially Open Ranges
To perform a NumericRangeQuery
with a partially open range, the following constant values are provided:
bluge.MinNumeric
bluge.MaxNumeric