diff --git a/.gitignore b/.gitignore index 548778e2f3c..778edd15ff2 100644 --- a/.gitignore +++ b/.gitignore @@ -62,3 +62,5 @@ go.work go.work.sum .env .envrc +CLAUDE.md +.claude/ diff --git a/services/search/pkg/engine/bleve.go b/services/search/pkg/engine/bleve.go index 90568b5b5f1..61208714af0 100644 --- a/services/search/pkg/engine/bleve.go +++ b/services/search/pkg/engine/bleve.go @@ -110,6 +110,16 @@ func BuildBleveMapping() (mapping.IndexMapping, error) { photoMapping.AddFieldMappingsAt("takenDateTime", photoDateMapping) docMapping.AddSubDocumentMapping("photo", photoMapping) + // Add explicit Location field mappings to ensure fields are stored + locationMapping := bleve.NewDocumentMapping() + locationNumericMapping := bleve.NewNumericFieldMapping() + locationNumericMapping.Store = true + locationNumericMapping.Index = true + locationMapping.AddFieldMappingsAt("latitude", locationNumericMapping) + locationMapping.AddFieldMappingsAt("longitude", locationNumericMapping) + locationMapping.AddFieldMappingsAt("altitude", locationNumericMapping) + docMapping.AddSubDocumentMapping("location", locationMapping) + indexMapping := bleve.NewIndexMapping() indexMapping.DefaultAnalyzer = keyword.Name indexMapping.DefaultMapping = docMapping diff --git a/services/webdav/pkg/service/v0/search.go b/services/webdav/pkg/service/v0/search.go index 1d37fbcb75c..65866292583 100644 --- a/services/webdav/pkg/service/v0/search.go +++ b/services/webdav/pkg/service/v0/search.go @@ -233,10 +233,13 @@ func matchToPropResponse(ctx context.Context, match *searchmsg.Match, hrefPrefix // Add location metadata if available if match.Entity.Location != nil { if match.Entity.Location.Latitude != nil { - propstatOK.Prop = append(propstatOK.Prop, prop.Escaped("oc:location-latitude", strconv.FormatFloat(*match.Entity.Location.Latitude, 'f', 6, 64))) + propstatOK.Prop = append(propstatOK.Prop, prop.Escaped("oc:photo-location-latitude", strconv.FormatFloat(*match.Entity.Location.Latitude, 'f', 6, 64))) } if match.Entity.Location.Longitude != nil { - propstatOK.Prop = append(propstatOK.Prop, prop.Escaped("oc:location-longitude", strconv.FormatFloat(*match.Entity.Location.Longitude, 'f', 6, 64))) + propstatOK.Prop = append(propstatOK.Prop, prop.Escaped("oc:photo-location-longitude", strconv.FormatFloat(*match.Entity.Location.Longitude, 'f', 6, 64))) + } + if match.Entity.Location.Altitude != nil { + propstatOK.Prop = append(propstatOK.Prop, prop.Escaped("oc:photo-location-altitude", strconv.FormatFloat(*match.Entity.Location.Altitude, 'f', 1, 64))) } }