- java.lang.Object
-
- org.apache.lucene.document.Field
-
- org.apache.lucene.document.InetAddressRange
-
- All Implemented Interfaces:
IndexableField
public class InetAddressRange extends Field
An indexed InetAddress Range FieldThis field indexes an
InetAddress
range defined as a min/max pairs. It is single dimension only (indexed as two 16 byte paired values).Multiple values are supported.
This field defines the following static factory methods for common search operations over Ip Ranges
newIntersectsQuery()
matches ip ranges that intersect the defined search range.newWithinQuery()
matches ip ranges that are within the defined search range.newContainsQuery()
matches ip ranges that contain the defined search range.newCrossesQuery()
matches ip ranges that cross the defined search range
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.lucene.document.Field
Field.Store
-
-
Field Summary
Fields Modifier and Type Field Description static int
BYTES
The number of bytes per dimension : sync w/InetAddressPoint
private static FieldType
TYPE
-
Fields inherited from class org.apache.lucene.document.Field
fieldsData, name, tokenStream, type
-
-
Constructor Summary
Constructors Constructor Description InetAddressRange(java.lang.String name, java.net.InetAddress min, java.net.InetAddress max)
Create a new InetAddressRange from min/max value
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static byte[]
encode(java.net.InetAddress min, java.net.InetAddress max)
encode the min/max range and return the byte arrayprivate static void
encode(java.net.InetAddress min, java.net.InetAddress max, byte[] bytes)
encode the min/max range into the provided byte arraystatic Query
newContainsQuery(java.lang.String field, java.net.InetAddress min, java.net.InetAddress max)
Create a query for matching indexed ip ranges thatCONTAINS
the defined range.static Query
newCrossesQuery(java.lang.String field, java.net.InetAddress min, java.net.InetAddress max)
Create a query for matching indexed ip ranges thatCROSS
the defined range.static Query
newIntersectsQuery(java.lang.String field, java.net.InetAddress min, java.net.InetAddress max)
Create a query for matching indexed ip ranges thatINTERSECT
the defined range.private static Query
newRelationQuery(java.lang.String field, java.net.InetAddress min, java.net.InetAddress max, RangeFieldQuery.QueryType relation)
helper method for creating the desired relational querystatic Query
newWithinQuery(java.lang.String field, java.net.InetAddress min, java.net.InetAddress max)
Create a query for matching indexed ip ranges that areWITHIN
the defined range.void
setRangeValues(java.net.InetAddress min, java.net.InetAddress max)
Change (or set) the min/max values of the field.private static java.lang.String
toString(byte[] ranges, int dimension)
Returns the String representation for the range at the given dimension-
Methods inherited from class org.apache.lucene.document.Field
binaryValue, fieldType, getCharSequenceValue, invertableType, name, numericValue, readerValue, setBytesValue, setBytesValue, setByteValue, setDoubleValue, setFloatValue, setIntValue, setLongValue, setReaderValue, setShortValue, setStringValue, setTokenStream, storedValue, stringValue, tokenStream, tokenStreamValue, toString
-
-
-
-
Field Detail
-
BYTES
public static final int BYTES
The number of bytes per dimension : sync w/InetAddressPoint
- See Also:
- Constant Field Values
-
TYPE
private static final FieldType TYPE
-
-
Constructor Detail
-
InetAddressRange
public InetAddressRange(java.lang.String name, java.net.InetAddress min, java.net.InetAddress max)
Create a new InetAddressRange from min/max value- Parameters:
name
- field name. must not be null.min
- range min value; defined as anInetAddress
max
- range max value; defined as anInetAddress
-
-
Method Detail
-
setRangeValues
public void setRangeValues(java.net.InetAddress min, java.net.InetAddress max)
Change (or set) the min/max values of the field.- Parameters:
min
- range min value; defined as anInetAddress
max
- range max value; defined as anInetAddress
-
encode
private static void encode(java.net.InetAddress min, java.net.InetAddress max, byte[] bytes)
encode the min/max range into the provided byte array
-
encode
private static byte[] encode(java.net.InetAddress min, java.net.InetAddress max)
encode the min/max range and return the byte array
-
newIntersectsQuery
public static Query newIntersectsQuery(java.lang.String field, java.net.InetAddress min, java.net.InetAddress max)
Create a query for matching indexed ip ranges thatINTERSECT
the defined range.- Parameters:
field
- field name. must not be null.min
- range min value; provided as anInetAddress
max
- range max value; provided as anInetAddress
- Returns:
- query for matching intersecting ranges (overlap, within, crosses, or contains)
- Throws:
java.lang.IllegalArgumentException
- iffield
is null,min
ormax
is invalid
-
newContainsQuery
public static Query newContainsQuery(java.lang.String field, java.net.InetAddress min, java.net.InetAddress max)
Create a query for matching indexed ip ranges thatCONTAINS
the defined range.- Parameters:
field
- field name. must not be null.min
- range min value; provided as anInetAddress
max
- range max value; provided as anInetAddress
- Returns:
- query for matching intersecting ranges (overlap, within, crosses, or contains)
- Throws:
java.lang.IllegalArgumentException
- iffield
is null,min
ormax
is invalid
-
newWithinQuery
public static Query newWithinQuery(java.lang.String field, java.net.InetAddress min, java.net.InetAddress max)
Create a query for matching indexed ip ranges that areWITHIN
the defined range.- Parameters:
field
- field name. must not be null.min
- range min value; provided as anInetAddress
max
- range max value; provided as anInetAddress
- Returns:
- query for matching intersecting ranges (overlap, within, crosses, or contains)
- Throws:
java.lang.IllegalArgumentException
- iffield
is null,min
ormax
is invalid
-
newCrossesQuery
public static Query newCrossesQuery(java.lang.String field, java.net.InetAddress min, java.net.InetAddress max)
Create a query for matching indexed ip ranges thatCROSS
the defined range.- Parameters:
field
- field name. must not be null.min
- range min value; provided as anInetAddress
max
- range max value; provided as anInetAddress
- Returns:
- query for matching intersecting ranges (overlap, within, crosses, or contains)
- Throws:
java.lang.IllegalArgumentException
- iffield
is null,min
ormax
is invalid
-
newRelationQuery
private static Query newRelationQuery(java.lang.String field, java.net.InetAddress min, java.net.InetAddress max, RangeFieldQuery.QueryType relation)
helper method for creating the desired relational query
-
toString
private static java.lang.String toString(byte[] ranges, int dimension)
Returns the String representation for the range at the given dimension- Parameters:
ranges
- the encoded ranges, never nulldimension
- the dimension of interest (not used for this field)- Returns:
- The string representation for the range at the provided dimension
-
-