Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Azure搜索服务获取距离_C#_Asp.net Mvc_Azure_Asp.net Core Mvc_Azure Cognitive Search - Fatal编程技术网

C# 使用Azure搜索服务获取距离

C# 使用Azure搜索服务获取距离,c#,asp.net-mvc,azure,asp.net-core-mvc,azure-cognitive-search,C#,Asp.net Mvc,Azure,Asp.net Core Mvc,Azure Cognitive Search,我有这样一个对象: [SerializePropertyNamesAsCamelCase] public class Location { [Key] public string Id { get; set; } [IsFilterable, IsSortable] public GeographyPoint GeographyPoint { get; set; } } 我想做的是检索10公里范围内的所有位置,并按距离排序,所以先显示最近的位置。最后,我想知道

我有这样一个对象:

[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);
var index=GetIndex();
var参数=新的SearchParameters
{
跳过=0,
Top=20,
Filter=“地理距离(地理点,地理点(-122.131577 47.678581)”le 10”
};
var results=index.Documents.Search(“*”,参数);
上面的问题是,它没有告诉我距离,也没有按距离排序

我想知道如何实现上述目标?我是否必须在Location对象内创建一个
双距离
属性,如果是,那么我如何填充它,以便我可以按它搜索、按它排序,然后检索它?

var orderBy=new List();
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 };
Add(“geo.distance(LatLong,geography'POINT(“+request.LatLong+”)”); var参数=新的SearchParameters{ 跳过=0, Top=20, Filter=“地理距离(地理点,地理点(-122.131577 47.678581)”le 10”, OrderBy=OrderBy};
还可以将asc/desc添加到order by变量的末尾,以升序或降序返回结果

不幸的是,azure search没有返回距离,您必须自己计算距离

可能重复的