Class LegacyCell
java.lang.Object
org.apache.lucene.spatial.prefix.tree.LegacyCell
- All Implemented Interfaces:
Cell
,CellCanPrune
- Direct Known Subclasses:
QuadPrefixTree.QuadCell
The base for the original two SPT's: Geohash and Quad. Don't subclass this for new SPTs.
- NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.
-
Field Summary
Modifier and TypeFieldDescriptionprotected int
protected int
protected byte[]
protected boolean
protected org.locationtech.spatial4j.shape.Shape
protected org.locationtech.spatial4j.shape.SpatialRelation
When set via getSubCells(filter), it is the relationship between this cell and the given shape filter. -
Constructor Summary
ModifierConstructorDescriptionprotected
LegacyCell
(byte[] bytes, int off, int len) Warning: Refers to the same bytes (no copy). -
Method Summary
Modifier and TypeMethodDescriptionprotected static int
compare
(byte[] aBytes, int aUpto, int a_length, byte[] bBytes, int bUpto, int b_length) Copied fromBytesRef.compareTo(BytesRef)
.int
compareToNoLeaf
(Cell fromCell) Equivalent tothis.getTokenBytesNoLeaf(null).compareTo(fromCell.getTokenBytesNoLeaf(null))
.boolean
protected abstract SpatialPrefixTree
getGrid()
int
getLevel()
Level 0 is the world (and has no parent), from then on a higher level means a smaller cell than the level before it.protected abstract int
getNextLevelCells
(org.locationtech.spatial4j.shape.Shape shapeFilter) Gets the cells at the next grid cell level underneath this one, optionally filtered byshapeFilter
.org.locationtech.spatial4j.shape.SpatialRelation
Gets the relationship this cell has with the shape from which it was filtered from, assuming it came from aCellIterator
.protected abstract LegacyCell
getSubCell
(org.locationtech.spatial4j.shape.Point p) Performant implementations are expected to implement this efficiently by considering the current cell's boundary.protected abstract Collection<Cell>
Gets the cells at the next grid cell level that covers this cell.getTokenBytesNoLeaf
(BytesRef result) Returns the bytes for this cell, without a leaf set.getTokenBytesWithLeaf
(BytesRef result) Returns the bytes for this cell, with a leaf byte if this is a leaf cell.int
hashCode()
boolean
isLeaf()
Some cells are flagged as leaves, which are indexed as such.boolean
isPrefixOf
(Cell c) Returns if the target term is within/underneath this cell; not necessarily a direct descendant.protected void
protected void
void
setLeaf()
Set this cell to be a leaf.void
setShapeRel
(org.locationtech.spatial4j.shape.SpatialRelation rel) SeeCell.getShapeRel()
.toString()
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.apache.lucene.spatial.prefix.tree.CellCanPrune
getSubCellsSize
-
Field Details
-
bytes
protected byte[] bytes -
b_off
protected int b_off -
b_len
protected int b_len -
isLeaf
protected boolean isLeaf -
shapeRel
protected org.locationtech.spatial4j.shape.SpatialRelation shapeRelWhen set via getSubCells(filter), it is the relationship between this cell and the given shape filter. Doesn't participate in shape equality. -
shape
protected org.locationtech.spatial4j.shape.Shape shape
-
-
Constructor Details
-
LegacyCell
protected LegacyCell(byte[] bytes, int off, int len) Warning: Refers to the same bytes (no copy). IfsetLeaf()
is subsequently called then it may modify bytes.
-
-
Method Details
-
readCell
-
readLeafAdjust
protected void readLeafAdjust() -
getGrid
-
getMaxLevels
protected abstract int getMaxLevels() -
getShapeRel
public org.locationtech.spatial4j.shape.SpatialRelation getShapeRel()Description copied from interface:Cell
Gets the relationship this cell has with the shape from which it was filtered from, assuming it came from aCellIterator
. Arguably it belongs there but it's very convenient here.- Specified by:
getShapeRel
in interfaceCell
-
setShapeRel
public void setShapeRel(org.locationtech.spatial4j.shape.SpatialRelation rel) Description copied from interface:Cell
SeeCell.getShapeRel()
.- Specified by:
setShapeRel
in interfaceCell
-
isLeaf
public boolean isLeaf()Description copied from interface:Cell
Some cells are flagged as leaves, which are indexed as such. A leaf cell is either within some shape or it both intersects and the cell is at an accuracy threshold such that no smaller cells for the shape will be represented. -
setLeaf
public void setLeaf()Description copied from interface:Cell
Set this cell to be a leaf. Warning: never call on a cell initialized to reference the same bytes from termsEnum, which should be treated as immutable. Note: not supported at level 0. -
getTokenBytesWithLeaf
Description copied from interface:Cell
Returns the bytes for this cell, with a leaf byte if this is a leaf cell. The result param is used to save object allocation, though its bytes aren't used.- Specified by:
getTokenBytesWithLeaf
in interfaceCell
- Parameters:
result
- where the result goes, or null to create new
-
getTokenBytesNoLeaf
Description copied from interface:Cell
Returns the bytes for this cell, without a leaf set. The bytes should sort beforeCell.getTokenBytesWithLeaf(org.apache.lucene.util.BytesRef)
. The result param is used to save object allocation, though its bytes aren't used.- Specified by:
getTokenBytesNoLeaf
in interfaceCell
- Parameters:
result
- where the result goes, or null to create new
-
getLevel
public int getLevel()Description copied from interface:Cell
Level 0 is the world (and has no parent), from then on a higher level means a smaller cell than the level before it. -
getNextLevelCells
Description copied from interface:Cell
Gets the cells at the next grid cell level underneath this one, optionally filtered byshapeFilter
. The returned cells should haveCell.getShapeRel()
set to their relation withshapeFilter
. In addition, for non-pointsCell.isLeaf()
must be true when that relation is WITHIN.IMPORTANT: Cells returned from this iterator can be shared, as well as the bytes.
Precondition: Never called when getLevel() == maxLevel.
- Specified by:
getNextLevelCells
in interfaceCell
- Parameters:
shapeFilter
- an optional filter for the returned cells.- Returns:
- A set of cells (no dups), sorted. Not Modifiable.
-
getSubCell
Performant implementations are expected to implement this efficiently by considering the current cell's boundary.- Precondition: Never called when getLevel() == maxLevel.
- Precondition: this.getShape().relate(p) != DISJOINT.
-
getSubCells
Gets the cells at the next grid cell level that covers this cell. Precondition: Never called when getLevel() == maxLevel.- Returns:
- A set of cells (no dups), sorted, modifiable, not empty, not null.
-
isPrefixOf
Description copied from interface:Cell
Returns if the target term is within/underneath this cell; not necessarily a direct descendant.- Specified by:
isPrefixOf
in interfaceCell
- Parameters:
c
- the term
-
compareToNoLeaf
Description copied from interface:Cell
Equivalent tothis.getTokenBytesNoLeaf(null).compareTo(fromCell.getTokenBytesNoLeaf(null))
.- Specified by:
compareToNoLeaf
in interfaceCell
-
compare
protected static int compare(byte[] aBytes, int aUpto, int a_length, byte[] bBytes, int bUpto, int b_length) Copied fromBytesRef.compareTo(BytesRef)
. This is to avoid creating a BytesRef. -
equals
-
hashCode
public int hashCode() -
toString
-