potreboval by som poradit ako rozbehat fulltextove vyhladavanie, ktore kontroluje geolokaciu. Ak vyhladavam priamo pre Entitu(Address ), kde je dzka, sirka, tak mi to zbehne ok a dostanem zoznam adries. Problem nastava, ak chcem vyhladavat inu Entitu, ktora obsahuje kolekciu adries na zaklade geolokacie. Z toho co som pozeral na nete to vyzera, ze by som potreboval vlastnu implementaciu Field Bridge-u, ale netusim ako by to malo vyzerat
Taky basic nahlad ako to vyzera v kode:
Kód: Vybrať všetko
@Entity
@Indexed
@Spatial
public class Address {
@Longitude
private Double longitude;
@Latitude
private Double latitude;
... + getters & setters
}
@Indexed
@MappedSupperclass
public abstract class Base {
@IndexedEmbedded
@OneToMany
@FieldBridge // ???
private Collection<Address> addresses;
... + getters & setters
}
@Indexed
@Entity
public class Person extends Base {
... + getters & setters
}
public class Searcher {
private QueryBuilder builder = ...
public List<Person> searchForGeoLocation( double radius, double latitude, double longitude ) {
org.apache.lucene.search.Query luceneQuery = builder.spatial()
.onField("addresses")
.within( radius, Unit.KM )
.ofLatitude( latitude, )
.andLongitude( longitude )
.createQuery();
return fullTextSession.createFullTextQuery( query, Person.class).list();
}
}