[hibernate-dev] [HSEARCH] Geospatial indexing and queries
Emmanuel Bernard
emmanuel at hibernate.org
Wed Dec 21 12:32:13 EST 2011
On 21 déc. 2011, at 16:29, Sanne Grinovero wrote:
> <nicolas.helleringer at gmail.com> wrote:
>> My two cents :
>>
>> - .onLocation("position")
>>
>> - .onLatitude("lat").onLongitude("lng")
>
> I'm confused on what the String represents. I'm going to assume index
> fields? So I'm preferring the "onLocation*Field* [..]" versions.
>
> Moreover, assuming we have some @Spatial annotation on the entity,
> can't we figure out the fields automatically, or at least have to
> point only the the property getter of component object which provides
> both latitude and longitude?
That's a good point but we need to support the case where more than one field is annotated @Spatial so they have to have a virtual name. This is the role of onCoordinates(...). I imagine we will need to put this name on @Spatial(property="location") where property defaults to the property name and is mandatory when placed on a entity class (type annotation).
The case for onLatitudeField / onLongitudeField is for people that do not want to implement nor use the `Coordinate` type in their model and use two free properties.
Maybe `Coordinates` is a bad idea entirely and we should only use "free form properties" like this
```
@Indexed
@Spatial(latitudeProperty="latitude", longitudeProperty="longitude", strategy=GRID)
public class Address {
public double getLatitude() { ... }
public double getLongitude() { ... }
}
```
Remember the alternative forms are using `Coordinates`, a Hibernate Search type
```
@Indexed
@Spatial(property="location", strategy=GRID)
public class Address implements Coordinates {
public double getLatitude() { ... }
public double getLongitude() { ... }
}
```
```
@Indexed
public class Address implements Coordinates {
@Spatial(strategy=GRID)
public Coordinates getLocation() { new Coordinates() {
public double getLatitude() { ... }
public double getLongitude() { ... }
}
}
```
By the way, I think a better name for .onCoordinates / forCoordinates is simply onProperty(String).
WDTY?
More information about the hibernate-dev
mailing list