Какой-нибудь пример для объединения поискового запроса географического местоположения с дистанционным фильтром / сортировкой? - PullRequest
2 голосов
/ 28 апреля 2019

Я использую gocb для запроса документов на основе географического местоположения.Пока что NewGeoDistanceQuery хорошо работает с индексом.Теперь мне нужно отсортировать результат по географическому положению.Согласно документу в здесь говорится, что мне нужно передать параметр сортировки внутри запроса!но у NewGeoDistanceQuery этого нет.Так что искал sdk и нашел NewSearchSortGeoDistance, это именно то, что я искал, но я не знаю, как их объединить.

    location := cbft.NewGeoDistanceQuery(in.Lat, in.Lon, fmt.Sprintf("%skm", in.Distance))
    sort := cbft.NewSearchSortGeoDistance("address", in.Lat, in.Lon).Unit("km")
    conjunctionQuery = cbft.NewConjunctionQuery(location, sort)

Я пробовал решение выше, но получил эту ошибку

{"error":"rest_index: Query, indexName: restaurant-geo-search, err: bleve: QueryBleve parsing searchRequest, err: unknown query type","request":{"ctl":{"timeout":75000},"query":{"conjuncts":[{"distance":"2km","location":[90.404272,23.793993]},{"by":"geo_distance","field":"address","location":[90.404272,23.793993],"unit":"km"}]},"size":100},"status":"fail"}

Я также пытался использовать только NewSearchSortGeoDistance, но та же ошибка.Любая помощь в этом?

1 Ответ

1 голос
/ 29 апреля 2019

Я ответил на https://forums.couchbase.com/t/any-example-for-combining-geo-location-search-query-with-distance-filter-sorting/21155, но просто для того, чтобы разместить всю информацию здесь:

Я думаю, что проблема здесь в том, что вы пытаетесь использовать порядок сортировки в качестве запроса,а не как критерии сортировки.Я думаю, что вы хотите, вероятно, gocb.NewSearchQuery(indexName, location).Sort(sort).Это возьмет критерий сортировки и поместит его в запрос JSON в поле sort, как вы можете видеть в нашей документации.

...