gpt4 book ai didi

python - 使用 Google 的自定义搜索 JSON API 的搜索结果不一致

转载 作者:行者123 更新时间:2023-12-03 16:58:17 24 4
gpt4 key购买 nike

我们正在使用 Google 的自定义搜索 JSON API 进行高等教育研究,我们基本上是在解析大量 URL 以查找有关各种组织对 COVID-19 的响应的信息。我们正在使用 Google 的 API 来查找热门搜索结果。但是,我们发现在 API 查询中使用不同的搜索参数时会出现不一致的结果。不一致是一个问题,因为我们试图将我们的查询磨练到一定的错误率(错误率是多少 URL 提供了有效的研究信息)。我们正在寻找人来帮助解释 Google 的 API 是如何工作的,因为文档非常少。
我们的基本查询示例:
'https://www.googleapis.com/customsearch/v1?key=KEY&cx=SEARCHENGINE&q="学校名称"intext:(term1 | term2 | term3) -inurl:(unwanted1 |不需要的2 |不需要的3) inurl:(wanted1 | Wanted2 | want3)&start=1'
其中“学校名称”是高等院校的名称。 Term1、term2 等,是我们希望在搜索结果正文中查找的特定变量。 intext 参数有助于避免某些文档中的不可见文本。例如,insidehighered.com 以隐形文本形式包含许多高等教育机构,而实际文章并不适用。不需要的 1 等。是我们不希望包含在 URL 标题中的单词或短语。例如,我们要避免使用 PDF 文档,因此可以是“.pdf”。通缉1等。是我们希望在 URL 中使用的词,例如“新闻”。我们使用“|”表示“或”,这允许我们将一个查询用于多种类型的搜索,从而有助于最大限度地降低 API 使用成本。
到目前为止,我们发现了以下问题/不一致:

  • “-”和“NOT”否定项返回不同的结果。
  • 参数的顺序很重要。例如,“inurl:(一些想要的搜索词)-inurl:(一些不需要的搜索词)”返回的结果与“-inurl:(一些不需要的搜索词)inurl:(一些想要的搜索词)”
  • 返回的结果不同。
  • 术语的嵌套也是不一致的。例如,“inurl:((想要的词| 想要的词)NOT(不想要的词| 不想要的词))”返回的结果与“inurl:(想要的词| 想要的词| 不是不需要的词不是不需要的词)”
  • 返回的结果不同。
  • 此外,API 有时会在两次不同时间使用相同的确切查询对某些查询返回不同的结果。看起来查询将返回 10 个结果,但会自发地混合下一页或其他地方的最后 1 或 2 个结果。例如,这个查询:"https://www.googleapis.com/customsearch/v1?key=KEY&cx=SEARCHENGINE&q="Miami University-Hamilton"intext:(减少学费|卡住学费|减少学费|降低学费) inurl: (新闻 | 公告 | 文章 | 故事) -inurl:(注册商 | 招生 | 学费和费用 | 学费表 | 日程 | 州 | 办公室 | 就业机会 | 关于我们 | 关于 |linkedin | 事件 | .uk | irs | .gov | 信息技术 | 维基百科 | wiki | 员工手册 | 学生手册 | 商店 | 年度 | youtube | pinterest | 商店 | 开业 | 确实 | 亚马逊 | 联系 | 工作板 | 工作板 | 政策 | 常见问题-questions | faq | forms | hours | Academic-calendar | calendar | directory | glassdoor | facebook | encyclopedia)&start=31”(然后下一页的 start=41)将返回“http://www.harbison.one/archive/z_1985_national_cc_directory.pdf”作为第 4 页的最后一项和第 5 页的第 1 项。当我们运行 GET 请求时,它有时会为第 4 页的最后一项返回不同的结果,但随后会为两个页面返回相同的重复 URL。

  • 我们用于从每个页面中提取项目的代码是:
    response = requests.get(query)
    content = response.json()
    hrefs = []

    try:
    for i in content['items'][0:num]:
    hrefs.append(i['link'].lower())


    except Exception as e:
    print(str(e))
    hrefs.append('a')


    谢谢!

    最佳答案

    恐怕您不太可能找到满足您正在寻找的标准的这个问题的答案。
    谷歌为了保护其商业 secret (除其他外),对其搜索引擎算法的内部结构极为保密。 What we do know, from official sources, is the following :

  • Google 广泛使用了自然语言处理 (NLP),并且会不遗余力地试图梳理出您查询的意图,即使这意味着忽略您实际搜索的内容;
  • 它喜欢包含您正在搜索的关键字的页面,但它也有复杂的保护措施来防止“关键字堆砌”,即有人在他们的页面中塞入大量可能的搜索条件以试图为自己带来额外的流量;
  • 它维护它信任的页面的内部列表,如果这些页面链接到内容(或者如果这些页面链接到链接到内容的页面,等等),它会将该内容排名更高;
  • 它根据一组可用性标准对页面进行评分,不喜欢慢速页面和未针对不同设备优化的页面;
  • 最后,它使用您的位置和过去的搜索历史来确定为您提供什么样的结果。

  • 这些点中的第一点可能是最重要的。使用 API 进行搜索可能不会给予您的搜索任何类型的特殊处理,这对于 API 行为来说是不寻常的,但对于 Google 来说却是一种预期。为了用户体验,谷歌很乐意改变自己的规则,我强烈怀疑你的搜索最终会成为这种行为的受害者。此外,考虑到环境和所有情况,他们将涉及 COVID-19 搜索的特殊事物直接硬编码到引擎的行为中,这可能会使事情变得更加复杂。
    我希望我有更好的消息给你,但你可能只需要制作搜索引擎在你工作时吐出的任何奇怪和不一致的东西。结果几乎肯定是不可重现的,并且由于上面列出的第五点,它们甚至可能无法由您自己稍后重现。抱歉。

    关于python - 使用 Google 的自定义搜索 JSON API 的搜索结果不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65295872/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com