Получение расстояния с помощью службы поиска Azure - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть такой объект:

[SerializePropertyNamesAsCamelCase]
public class Location
{
    [Key]
    public string Id { get; set; }

    [IsFilterable, IsSortable]
    public GeographyPoint GeographyPoint { get; set; }
}

Я хотел бы получить все местоположения, которые находятся в пределах 10 км, и упорядочить их по расстоянию, поэтому сначала самое близкое шоу.Наконец, я хочу знать, что это за расстояние.

Вот то, что я пробовал:

var index = GetIndex();

var parameters = new SearchParameters
{
    Skip = 0,
    Top = 20,
    Filter = "geo.distance(geographyPoint, geography'POINT(-122.131577 47.678581)') le 10  "
};

var results = index.Documents.Search<Location>("*", parameters);

Проблема с тем, что выше, это то, что он не сообщает мне расстояние и не делает этосортировать по нему.

Мне интересно, как выполнить вышеизложенное?Нужно ли создавать свойство double Distance внутри объекта Location, и если да, то как мне его заполнить, чтобы я мог искать по нему, упорядочивать по нему и затем извлекать его?

1 Ответ

0 голосов
/ 10 августа 2019
var orderBy = new List<string>();
orderBy.Add("geo.distance(LatLong, geography'POINT(" + request.LatLong + ")')");

var parameters = new SearchParameters {
Skip = 0,
Top = 20,
Filter = "geo.distance(geographyPoint, geography'POINT(-122.131577 47.678581)') le 10",
OrderBy = orderBy };

Вы также можете добавить asc / desc в конец вашего заказа с помощью переменной, чтобы возвращать результаты по возрастанию или по убыванию.

К сожалению, поиск Azure не возвращает расстояние, вам придется рассчитать, чтосам.

...