## org.apache.lucene.spatial.prefix
Class RecursivePrefixTreeStrategy

    java.lang.Object
      org.apache.lucene.spatial.SpatialStrategy
          org.apache.lucene.spatial.prefix.PrefixTreeStrategy
              org.apache.lucene.spatial.prefix.RecursivePrefixTreeStrategy

    public class RecursivePrefixTreeStrategy

extends PrefixTreeStrategy

A `PrefixTreeStrategy` which uses `AbstractVisitingPrefixTreeFilter`. This strategy has support for searching non-point shapes (note: not tested). Even a query shape with distErrPct=0 (fully precise to the grid) should have good performance for typical data, unless there is a lot of indexed data coincident with the shape's edge.

WARNING: This API is experimental and might change in incompatible ways in the next release.

Field Summary
`protected boolean` `multiOverlappingIndexedShapes` See `ContainsPrefixTreeFilter.multiOverlappingIndexedShapes`.
`protected boolean` `pointsOnly` True if only indexed points shall be supported.

Fields inherited from class org.apache.lucene.spatial.prefix.PrefixTreeStrategy
`defaultFieldValuesArrayLen, distErrPct, FIELD_TYPE, grid, simplifyIndexedCells`

Fields inherited from class org.apache.lucene.spatial.SpatialStrategy
`ctx`

Constructor Summary
`RecursivePrefixTreeStrategy(SpatialPrefixTree grid, String fieldName)`

Method Summary
`Filter` `makeFilter(SpatialArgs args)` Make a Filter based principally on `SpatialOperation` and `Shape` from the supplied `args`.
`void` `setPrefixGridScanLevel(int prefixGridScanLevel)` Sets the grid level [1-maxLevels] at which indexed terms are scanned brute-force instead of by grid decomposition.
`String` `toString()`

Methods inherited from class org.apache.lucene.spatial.prefix.PrefixTreeStrategy
`createIndexableFields, createIndexableFields, getDistErrPct, getGrid, makeDistanceValueSource, setDefaultFieldValuesArrayLen, setDistErrPct`

Methods inherited from class org.apache.lucene.spatial.SpatialStrategy
`getFieldName, getSpatialContext, makeQuery, makeRecipDistanceValueSource`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### pointsOnly

    protected boolean pointsOnly

  True if only indexed points shall be supported. See `IntersectsPrefixTreeFilter.hasIndexedLeaves`.

### multiOverlappingIndexedShapes

    protected boolean multiOverlappingIndexedShapes

  See `ContainsPrefixTreeFilter.multiOverlappingIndexedShapes`.

Constructor Detail

### RecursivePrefixTreeStrategy

    public RecursivePrefixTreeStrategy(SpatialPrefixTree grid,
                                       String fieldName)

Method Detail

### setPrefixGridScanLevel

    public void setPrefixGridScanLevel(int prefixGridScanLevel)

  Sets the grid level [1-maxLevels] at which indexed terms are scanned brute-force instead of by grid decomposition. By default this is maxLevels - 4. The final level, maxLevels, is always scanned.

  Parameters:
    `prefixGridScanLevel` - 1 to maxLevels

### toString

    public String toString()

  Overrides:
    `toString` in class `SpatialStrategy`

### makeFilter

    public Filter makeFilter(SpatialArgs args)

  Description copied from class: `SpatialStrategy`
  Make a Filter based principally on `SpatialOperation` and `Shape` from the supplied `args`.

  If a subclasses implements `SpatialStrategy.makeQuery(org.apache.lucene.spatial.query.SpatialArgs)` then this method could be simply:

      return new QueryWrapperFilter(makeQuery(args).getQuery());

  Specified by:
    `makeFilter` in class `SpatialStrategy`

Copyright © 2000-2013 Apache Software Foundation. All Rights Reserved.