org.apache.lucene.spatial.prefix
Class WithinPrefixTreeFilter

java.lang.Object
  extended by org.apache.lucene.search.Filter
      extended by org.apache.lucene.spatial.prefix.AbstractPrefixTreeFilter
          extended by org.apache.lucene.spatial.prefix.AbstractVisitingPrefixTreeFilter
              extended by org.apache.lucene.spatial.prefix.WithinPrefixTreeFilter

public class WithinPrefixTreeFilter
extends AbstractVisitingPrefixTreeFilter

Finds docs where its indexed shape is WITHIN the query shape. It works by looking at cells outside of the query shape to ensure documents there are excluded. By default, it will examine all cells, and it's fairly slow. If you know that the indexed shapes are never comprised of multiple disjoint parts (which also means it is not multi-valued), then you can pass SpatialPrefixTree.getDistanceForLevel(maxLevels) as the queryBuffer constructor parameter to minimally look this distance beyond the query shape's edge. Even if the indexed shapes are sometimes comprised of multiple disjoint parts, you might want to use this option with a large buffer as a faster approximation with minimal false-positives.

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

Nested Class Summary
 
Nested classes/interfaces inherited from class org.apache.lucene.spatial.prefix.AbstractVisitingPrefixTreeFilter
AbstractVisitingPrefixTreeFilter.VisitorTemplate, AbstractVisitingPrefixTreeFilter.VNode
 
Nested classes/interfaces inherited from class org.apache.lucene.spatial.prefix.AbstractPrefixTreeFilter
AbstractPrefixTreeFilter.BaseTermsEnumTraverser
 
Field Summary
 
Fields inherited from class org.apache.lucene.spatial.prefix.AbstractVisitingPrefixTreeFilter
prefixGridScanLevel
 
Fields inherited from class org.apache.lucene.spatial.prefix.AbstractPrefixTreeFilter
detailLevel, fieldName, grid, queryShape
 
Constructor Summary
WithinPrefixTreeFilter(com.spatial4j.core.shape.Shape queryShape, String fieldName, SpatialPrefixTree grid, int detailLevel, int prefixGridScanLevel, double queryBuffer)
          See AbstractVisitingPrefixTreeFilter.AbstractVisitingPrefixTreeFilter(com.spatial4j.core.shape.Shape, String, org.apache.lucene.spatial.prefix.tree.SpatialPrefixTree, int, int).
 
Method Summary
protected  com.spatial4j.core.shape.Shape bufferShape(com.spatial4j.core.shape.Shape shape, double distErr)
          Returns a new shape that is larger than shape by at distErr.
 DocIdSet getDocIdSet(AtomicReaderContext context, Bits acceptDocs)
           
 
Methods inherited from class org.apache.lucene.spatial.prefix.AbstractVisitingPrefixTreeFilter
equals, hashCode
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

WithinPrefixTreeFilter

public WithinPrefixTreeFilter(com.spatial4j.core.shape.Shape queryShape,
                              String fieldName,
                              SpatialPrefixTree grid,
                              int detailLevel,
                              int prefixGridScanLevel,
                              double queryBuffer)
See AbstractVisitingPrefixTreeFilter.AbstractVisitingPrefixTreeFilter(com.spatial4j.core.shape.Shape, String, org.apache.lucene.spatial.prefix.tree.SpatialPrefixTree, int, int). queryBuffer is the (minimum) distance beyond the query shape edge where non-matching documents are looked for so they can be excluded. If -1 is used then the whole world is examined (a good default for correctness).

Method Detail

bufferShape

protected com.spatial4j.core.shape.Shape bufferShape(com.spatial4j.core.shape.Shape shape,
                                                     double distErr)
Returns a new shape that is larger than shape by at distErr.


getDocIdSet

public DocIdSet getDocIdSet(AtomicReaderContext context,
                            Bits acceptDocs)
                     throws IOException
Specified by:
getDocIdSet in class Filter
Throws:
IOException


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