【问题标题】:Bing cognitive search, actual site in url, not bing redirection必应认知搜索,网址中的实际站点,而不是必应重定向
【发布时间】:2017-05-12 22:07:37
【问题描述】:

有没有办法让结果链接显示确切的链接,而不是 bing 重定向?

例如,在 bing 认知搜索中是否有办法将 href 放置在实际链接而不是重定向?

`"value": [
 {
     "id": "https://api.cognitive.microsoft.com/api/v5/#WebPages.0",
     "name": "<b>Burrito Recipes</b> - Allrecipes.com",
     "url": "http://www.bing.com/cr?IG=4BE4CA19570B4740ABE2B85782727544&CI......",
     "displayUrl": "all<b>recipes</b>.com/<b>recipes</b>/1216",
     "snippet": "<b>Burrito Recipes</b> ...",
     "deepLinks": [
         {
             "name": "Mexican",
             "url": "http://www.bing.com/cr?IG=4BE4CA19570B4740ABE2BF...",
             "snippet": "Mexican Recipes Find ..."
         }
      ]`

所以 url 是实际的链接?

【问题讨论】:

    标签: bing bing-api microsoft-cognitive web-search bing-search


    【解决方案1】:

    您可以在 url 中使用 'r=' 查询参数来获取重定向所指向的确切 url。示例 bing url 如下所示

    "url": "http://www.bing.com/cr?IG=584DA9A5C8B245DDA12848B177BAF817&CID=138CDEBD227860443797D43D239D616C&rd=1&h=0UIFjW9hoNBrd0LFRhopxM1IDwbKCHvSc-z-FdLfyMQ&v=1&r=http%3a%2f%2fallrecipes.com%2frecipes%2f1216%2fworld-cuisine%2flatin-american%2fmexican%2fmain-dishes%2fburritos%2f&p=DevEx,5066.1"
    

    这里,

    r=http%3a%2f%2fallrecipes.com%2frecipes%2f1216%2fworld-cuisine%2flatin-american%2fmexican%2fmain-dishes%2fburritos%2f
    

    请注意,网址是经过编码的。如果需要,执行 url 解码。所有这些都可以使用以下 Java 代码完成。

    import org.apache.http.NameValuePair;
    import org.apache.http.client.utils.URIBuilder;
    import org.apache.log4j.Logger;
    
    import java.net.URISyntaxException;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import java.util.stream.Collectors;
    
    public static String getExactUrl(String url) {
        Map<String, String> queryParams = getQueryParamsMap(url);
        return queryParams.getOrDefault("r", url);
    }
    
    public static Map<String, String> getQueryParamsMap(String url) {
        Map<String, String> queryParamsMap = new HashMap<>();
        try {
            URIBuilder uriBuilder = new URIBuilder(url);
            List<NameValuePair> queryParams = uriBuilder.getQueryParams();
            queryParamsMap = queryParams.stream().collect(Collectors.toMap(NameValuePair::getName, NameValuePair::getValue));
        } catch (URISyntaxException e) {
            e.printStackTrace();
        }
        return queryParamsMap;
    }
    

    【讨论】:

    • 很酷,我明白了,但这不会违反 bing 服务条款吗?您对此有何经验?
    • docs.microsoft.com/en-gb/azure/cognitive-services/… 的必应搜索 API 使用和显示要求确实提到您不得修改结果的内容(除了以不违反任何其他要求的方式重新格式化它们) ; 因为他们使用重定向 url 进行数据收集。
    【解决方案2】:

    我们发现的唯一方法是从displayUrl 中删除&lt;b&gt;&lt;/b&gt;...

    【讨论】:

    • 是的,但那是前端 URL;要显示,它可能不是完整的 URL 路径....
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-02
    • 1970-01-01
    相关资源
    最近更新 更多