我创建了与 Google 自定义搜索 API 的集成,查询看起来相当简单,但返回了意想不到的结果。我的查询基于本指南:https ://developers.google.com/custom-search/docs/structured_search
在我的网站上,我创建了页面地图,其中包含我的 pagetypeid 信息(我想要在其中过滤)和页面排名(我想要排序)。这些页面由谷歌索引,当我尝试做一个简单的查询时,json 对象包含正确的值。即:当我在浏览器中测试时:
https://www.googleapis.com/customsearch/v1?key=[myKey]&cx=[myCx]&q=*&alt=json
请注意,我正在搜索 q=* (所有内容)。
我收到一个带有页面映射对象的项目列表,如下所示:
“页面地图”:{
"page": [
{
"pagetypeid": "12",
}
],
"pageranking": [
{
"score": "5"
}
],...}
我有 pagetypeid 的对象:12,3 和一系列其他数字......
当我尝试添加过滤或排序时,奇怪的部分就出现了。
如果我将上面的查询更改为:
https://www.googleapis.com/customsearch/v1?key=[myKey]&cx=[myCx]&q= *+more:pagemap:page-pagetypeid:3 &alt=json
谷歌的结果没有任何命中,即使第一个查询显示了许多带有 pagetypeid:3 的命中。
如果尝试相同的查询但从 pagetypeid:3 更改为 pagetypeid:12,我会按预期收到命中。
为什么这些查询的处理方式不同?
这与排序的方式相同。使用按分数排序搜索 * 会返回 0,但使用 q=test+sort... 搜索会返回命中。是我如何将不同参数传递给 Google 的组合吗?
编辑: 是否有可能因为这是一个测试站点,除了我自己的查询之外没有其他流量 - 我的请求的响应在被索引之前已被缓存,因此我的查询返回过时的结果?
是否也有可能,当我在具有更多活动的站点上安装此集成时,索引(由 Google 提供)会更频繁地更新,因此这些“错误”不会出现?
提前致谢。