Spec-Zone.ru › Redis

GEOSEARCH

GEOSEARCH
Синтаксис
GEOSEARCH key <FROMMEMBER member | FROMLONLAT longitude latitude>
  <BYRADIUS radius <M | KM | FT | MI> | BYBOX width height <M | KM |
  FT | MI>> [ASC | DESC] [COUNT count [ANY]] [WITHCOORD] [WITHDIST]
  [WITHHASH]
Доступно с версии:
6.2.0
Сложность по времени:
O(N+log(M)), где N — количество элементов в области прямоугольника, ограниченного заданной формой фильтра, а M — количество элементов внутри формы.
Категории ACL:
@read, @geo, @slow,

Возвращает члены упорядоченного набора, заполненного геопространственной информацией, используя команду GEOADD, которые находятся внутри границ области, заданной данной формой. Эта команда расширяет команду GEORADIUS, поэтому, помимо поиска в круговых областях, она поддерживает поиск в прямоугольных областях.

Эта команда должна быть использована вместо устаревших команд GEORADIUS и GEORADIUSBYMEMBER.

Центр запроса задается одним из обязательных параметров:

  • FROMMEMBER: Использует позицию заданного существующего <member> в упорядоченном наборе.
  • FROMLONLAT: Использует заданные <longitude> и <latitude> координаты.

Форма запроса задается одним из обязательных параметров:

  • BYRADIUS: Аналогично команде GEORADIUS, поиск внутри круговой области в соответствии с заданным <radius>.
  • BYBOX: Поиск внутри прямоугольника с заданными <height> и <width> координатами.

Команда необязательно возвращает дополнительную информацию, используя следующие параметры:

  • WITHDIST: Также возвращает расстояние возвращенных элементов от заданной центральной точки. Расстояние возвращается в тех же единицах, что и для аргументов радиуса, высоты и ширины.
  • WITHCOORD: Также возвращает долготу и широту соответствующих элементов.
  • WITHHASH: Также возвращает сырое значение скоринга упорядоченного набора, закодированное с помощью geohash, в виде 52-битного беззнакового целого числа. Это полезно только для низкоуровневых хаков или отладки и в ином случае не представляет большого интереса для обычных пользователей.

Соответствующие элементы возвращаются в неупорядоченном виде по умолчанию. Для сортировки используйте один из следующих двух параметров:

  • ASC: Сортировать возвращенные элементы от ближайшего к самому далекому относительно центральной точки.
  • DESC: Сортировать возвращенные элементы от самого далекого к ближайшему относительно центральной точки.

По умолчанию возвращаются все соответствующие элементы. Чтобы ограничить результаты первыми N соответствующими элементами, используйте параметр COUNT <count>. Когда используется параметр ANY, команда возвращает результаты, как только найдено достаточно совпадений. Это означает, что возвращенные результаты могут не быть самыми близкими к заданной точке, но затраты сервера на их получение значительно меньше. Если параметр ANY не указан, команда выполнит операцию, пропорциональную количеству элементов, соответствующих заданной области, и отсортирует их. Таким образом, запросы к очень большим областям с очень малым значением COUNT могут быть медленными, даже если возвращается лишь несколько результатов.

Возврат

Массивный ответ, а именно:

  • Без указания любого из WITH параметров команда возвращает линейный массив, например, ["Нью-Йорк","Милан","Париж"].
  • Если указаны параметры WITHCOORD, WITHDIST или WITHHASH, команда возвращает массив массивов, где каждый подмассив представляет собой один элемент.

Когда дополнительная информация возвращается в виде массива массивов для каждого элемента, первый элемент в подмассиве всегда является именем возвращенного элемента. Другая информация возвращается в следующем порядке как последующие элементы подмассива.

  1. Расстояние от центра как число с плавающей запятой в тех же единицах, что и в форме.
  2. Целое значение geohash.
  3. Координаты в виде массива из двух элементов x,y (долгота, широта).

Примеры

GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
GEOADD Sicily 12.758489 38.788135 "edge1"   17.241510 38.788135 "edge2" 
GEOSEARCH Sicily FROMLONLAT 15 37 BYRADIUS 200 km ASC
GEOSEARCH Sicily FROMLONLAT 15 37 BYBOX 400 400 km ASC WITHCOORD WITHDIST

История

  • Начиная с версии Redis 7.0.0: Добавлена поддержка прописных имен единиц измерения.

© 2006–2022 Salvatore Sanfilippo
Licensed under the Creative Commons Attribution-ShareAlike License 4.0.
https://redis.io/commands/geosearch/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API