在Google自定义搜索中,我们在sort参数中传递日期范围条件
http://www.example.com/search?cx=xxxxxxxxxxxxxxxxxxxxx:yyyyyy_yyyyy&q=google&sort=date:r:20160304:20160505.
https://developers.google.com/custom-search/docs/structured_search#restrict_to_range
但是我们没有按照日期范围标准获得预期结果 . 调试代码后,即使我们将sort参数传递给我们的搜索页面网址,也不会将sort参数传递给自定义搜索网址 .
Google Custom search URL:
https://cse.google.com/cse?q=google&r=m&cx=xxxxxxxxxxxxxxxxxxxxx:yyyyyy_yyyyy&fexp=20606&client=google-coop&hl=en&type=0&oe=UTF-8&ie=UTF-8&format=p4&ad=p4&nocache=1081472127237880&num=0&output=uds_ads_only&source=gcsc&v=3&allwcallad=1&adext=as1%2Csr1%2Cctc1&bsl=10&u_his=50&u_tz=330&dt=1472127237882&u_w=1366&u_h=768&biw=1349&bih=233&psw=1349&psh=233&frm=0&uio=uv3st16sd13sv13lhsl1sr1cc1-&jsv=14100&rurl=http%3A%2F%2Fwww.example.com%2Fsearch%3Fcx%xxxxxxxxxxxxxxxxxxxx_yyyyy%26q%3Dgoogle%26sort%3Ddate%253Ar%253A20160304%253A20160505
但是当我们尝试使用排序日期范围参数访问直接API时,我们得到了预期的结果 .
https://www.googleapis.com/customsearch/v1?q=google&cx=xxxxxxxxxxxxxxxxxxxxx:yyyyyy_yyyyy&sort=date%3Ar%3A20160701%3A20160724&key=<APIKEY>
我们正在使用Google自定义搜索V2实施 .
谢谢,Anup
4 回答
尝试转义作为查询参数传递的所有特殊字符 . 例如
这些编码是这样的 . 你可以通过两种方式逃脱它
显式指定
escapeXml = "**false**"
作为默认值将为true .如果使用
<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
,则在JSP中添加url,然后通过调用${fn:escapeXml(myString)}
进行转义 .这似乎与您的url参数编码有关 . 它可能是双重编码的 .
我认为在代码中你为查询参数执行任何转义字符尝试删除该检查
确保您使用的格式正确 .
谢谢!