根据 bing 搜索服务中的关键字查找建议地址

Finding suggested addresses from a key word in bing search service

我创建了一个 WPF 应用程序来根据输入的关键字查找位置。为此,我使用了 bing 地图服务 api 我的代码是

    private object SearchKeywordLocation(string keywordLocation)
    {
        String results = "";
        SearchRequest searchRequest = new SearchRequest();

        // Set the credentials using a valid Bing Maps key
        searchRequest.Credentials = new SearchService.Credentials();
        searchRequest.Credentials.ApplicationId = "my key";

        //Create the search query
        StructuredSearchQuery ssQuery = new StructuredSearchQuery();
        string[] parts = keywordLocation.Split(';');
        ssQuery.Keyword = parts[0];
        ssQuery.Location = parts[1];
        searchRequest.StructuredQuery = ssQuery;

        //Define options on the search
        searchRequest.SearchOptions = new SearchOptions();
        searchRequest.SearchOptions.Filters =
            new FilterExpression()
            {
                PropertyId = 3,
                CompareOperator = CompareOperator.GreaterThanOrEquals,
                FilterValue = 8.16
            };

        //Make the search request
        SearchServiceClient searchService = new SearchServiceClient("BasicHttpBinding_ISearchService");
        SearchResponse searchResponse = searchService.Search(searchRequest);

        //Parse and format results
        if (searchResponse.ResultSets[0].Results.Length > 0)
        {
            StringBuilder resultList = new StringBuilder("");
            for (int i = 0; i < searchResponse.ResultSets[0].Results.Length; i++)
            {
                resultList.Append(String.Format("{0}. {1}\n", i + 1,
                    searchResponse.ResultSets[0].Results[i].Name));
            }

            results = resultList.ToString();
        }
        else
            results = "No results found";

        return results;
    }
}

对于这个应用程序。我在调用 SearchKeywordLocation("sushi; Arvada, CO"); 时得到结果,但我的要求是在调用 SearchKeywordLocation("new"); 时得到结果 我应该得到与纽约相关的结果。应该避免这种特定的字符串格式。我在这里做错了什么?

搜索服务用于兴趣点而非地址。纽约属于地址类别,应该通过地理编码服务传递。也就是说,将 "New" 传入任何服务都不会得到您想要的结果,因为有数百万种可能的结果名称中包含 "new" 一词。鉴于此,地理编码器可能会识别出这是一个格式不佳的查询,并将可能的结果限制为少数(测试 "new" 我看到 5 个结果,纽约不是其中之一)。

也就是说,您还应该避免使用旧的遗留 SOAP 服务。它们快要报废了,文档在几年前就被下线了。事实上,我们大约在 5 年前就停止推荐 SOAP 服务,并且只为使用旧应用程序 运行 的客户保留它们。这些服务在 5 年前被 Bing 地图服务所取代,后者具有更多的特性和功能,速度更快,响应对象更小并且往往 return 更准确的结果。您可以在此处找到有关使用 REST 服务的文档:https://msdn.microsoft.com/en-us/library/ff701713.aspx

这里有一些关于在 .NET 中使用它们的文档:https://msdn.microsoft.com/en-us/library/jj819168.aspxI

我也一直致力于创建一个很好的 .NET 库来包装服务,使它们更容易在这些类型的应用程序中使用。如果您有兴趣对其进行测试,请发送电子邮件至 ricky_brundritt Hotmail.com,我会向您发送一份库副本。