Package org.apache.lucene.spatial.serialized

# Class SerializedDVStrategy

java.lang.Object
org.apache.lucene.spatial.SpatialStrategy
org.apache.lucene.spatial.serialized.SerializedDVStrategy

public class SerializedDVStrategy extends SpatialStrategy
A SpatialStrategy based on serializing a Shape stored into BinaryDocValues. This is not at all fast; it's designed to be used in conjunction with another index based SpatialStrategy that is approximated (like `RecursivePrefixTreeStrategy`) to add precision or eventually make more specific / advanced calculations on the per-document geometry. The serialization uses Spatial4j's `BinaryCodec`.

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

## Field Summary

### Fields inherited from class org.apache.lucene.spatial.SpatialStrategy

`ctx`

## Constructor Summary

Constructors
Constructor
Description
`SerializedDVStrategy(org.locationtech.spatial4j.context.SpatialContext ctx, String fieldName)`
Constructs the spatial strategy with its mandatory arguments.

## Method Summary

Modifier and Type
Method
Description
`Field[]`
`createIndexableFields(org.locationtech.spatial4j.shape.Shape shape)`
Returns the IndexableField(s) from the `shape` that are to be added to the `Document`.
`DoubleValuesSource`
`makeDistanceValueSource(org.locationtech.spatial4j.shape.Point queryPoint, double multiplier)`
Make a ValueSource returning the distance between the center of the indexed shape and `queryPoint`.
`Query`
`makeQuery(SpatialArgs args)`
Returns a Query that should be used in a random-access fashion.
`ShapeValuesSource`
`makeShapeValueSource()`
Provides access to each shape per document

### Methods inherited from class org.apache.lucene.spatial.SpatialStrategy

`getFieldName, getSpatialContext, makeDistanceValueSource, makeRecipDistanceValueSource, toString`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Constructor Details

### SerializedDVStrategy

public SerializedDVStrategy(org.locationtech.spatial4j.context.SpatialContext ctx, String fieldName)
Constructs the spatial strategy with its mandatory arguments.

## Method Details

### createIndexableFields

public Field[] createIndexableFields(org.locationtech.spatial4j.shape.Shape shape)
Description copied from class: `SpatialStrategy`
Returns the IndexableField(s) from the `shape` that are to be added to the `Document`. These fields are expected to be marked as indexed and not stored.

Note: If you want to store the shape as a string for retrieval in search results, you could add it like this:

    document.add(new StoredField(fieldName,ctx.toString(shape)));

The particular string representation used doesn't matter to the Strategy since it doesn't use it.

Specified by:
  `createIndexableFields` in class `SpatialStrategy`
Returns:
  Not null nor will it have null elements.

### makeDistanceValueSource

public DoubleValuesSource makeDistanceValueSource(org.locationtech.spatial4j.shape.Point queryPoint, double multiplier)
Description copied from class: `SpatialStrategy`
Make a ValueSource returning the distance between the center of the indexed shape and `queryPoint`. If there are multiple indexed shapes then the closest one is chosen. The result is multiplied by `multiplier`, which conveniently is used to get the desired units.

Specified by:
  `makeDistanceValueSource` in class `SpatialStrategy`

### makeQuery

public Query makeQuery(SpatialArgs args)
Returns a Query that should be used in a random-access fashion. Use in another manner will be SLOW.

Specified by:
  `makeQuery` in class `SpatialStrategy`

### makeShapeValueSource

public ShapeValuesSource makeShapeValueSource()
Provides access to each shape per document