从必应搜索服务的关键字查找建议地址

本文关键字:查找 地址 关键字 搜索 服务 | 更新日期: 2023-09-27 18:05:37

我创建了一个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");时得到结果,我应该得到与纽约相关的结果。应该避免这种特定的字符串格式。我哪里做错了?

从必应搜索服务的关键字查找建议地址

Search服务针对兴趣点而不是地址。纽约属于地址的范畴,应该通过地理编码服务传递。也就是说,将"New"传入任何服务都不可能得到您想要的结果,因为有数百万可能的结果在其名称中包含"New"一词。考虑到这一点,地理编码器可能会识别出这是一个格式不佳的查询,并将可能的结果限制在几个(测试"new"时,我看到了5个结果,纽约不在其中)。

也就是说,您还应该避免使用旧的遗留SOAP服务。它们的寿命已经接近尾声,几年前这些文档就已经下线了。事实上,我们大约在5年前就不再推荐SOAP服务了,只保留给那些在上面运行旧应用程序的客户。这些服务在5年前被必应地图服务所取代,后者拥有更多的特性和功能,速度更快,响应对象更小,并且倾向于返回更准确的结果。您可以在这里找到关于使用REST服务的文档:https://msdn.microsoft.com/en-us/library/ff701713.aspx

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

我也一直致力于创建一个很好的。net库来包装这些服务,使它们更容易在这些类型的应用程序中使用。如果你有兴趣测试一下,给我发邮件,地址是ricky_brundritat Hotmail.com,我会给你发一份库的副本。