From 3ad13236ecb0621952ba82e41d1c4bb95adeef66 Mon Sep 17 00:00:00 2001 From: Marty Schoch Date: Fri, 31 Mar 2017 09:40:54 -0400 Subject: [PATCH] fix geopoint fields to be able to be stored and retrieved --- index/upsidedown/upsidedown.go | 4 ++++ index_impl.go | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/index/upsidedown/upsidedown.go b/index/upsidedown/upsidedown.go index 7c6fea45..a8ef538e 100644 --- a/index/upsidedown/upsidedown.go +++ b/index/upsidedown/upsidedown.go @@ -604,6 +604,8 @@ func encodeFieldType(f document.Field) byte { fieldType = 'd' case *document.BooleanField: fieldType = 'b' + case *document.GeoPointField: + fieldType = 'g' case *document.CompositeField: fieldType = 'c' } @@ -735,6 +737,8 @@ func decodeFieldType(typ byte, name string, pos []uint64, value []byte) document return document.NewDateTimeFieldFromBytes(name, pos, value) case 'b': return document.NewBooleanFieldFromBytes(name, pos, value) + case 'g': + return document.NewGeoPointFieldFromBytes(name, pos, value) } return nil } diff --git a/index_impl.go b/index_impl.go index 26a59633..c1c4608c 100644 --- a/index_impl.go +++ b/index_impl.go @@ -464,6 +464,14 @@ func (i *indexImpl) SearchInContext(ctx context.Context, req *SearchRequest) (sr if err == nil { value = boolean } + case *document.GeoPointField: + lon, err := docF.Lon() + if err == nil { + lat, err := docF.Lat() + if err == nil { + value = []float64{lon, lat} + } + } } if value != nil { hit.AddFieldValue(docF.Name(), value)