自定义搜索引擎的“term1 OR term2”查询的正确语法是什么

问题描述

情况:

我正在使用谷歌自定义搜索引擎、谷歌云平台和 R 来搜索给定术语出现的网页数量。由于给定术语的同义词存在,我正在尝试获取数量网页中出现的给定术语其同义词(“或”在此处以其非排他的含义使用)。

问题:

我尝试用几种不同的方式来制定查询,所有这些都产生了不连贯的结果(即带有“term1”的网页数量>带有“term1”或“term2”的网页数量)。

以下是我尝试过的配方(此处 term1 = Alsophis antiguae,term2 = Alsophis leucomelas):

URL_1 <- paste0(URL,key,"&cx=",cx,"&q=\'",URLencode("Alsophis antiguae | Alsophis leucomelas"),"\'")

URL_2 <- paste0(URL,URLencode("Alsophis antiguae OR Alsophis leucomelas"),"\'")

URL_3 <- paste0(URL,"Alsophis%20antiguae","OR","Alsophis%20leucomelas","\'")

URL_4 <- paste0(URL,"%20OR%20","\'")

URL_5 <- paste0(URL,"\'","\'")

生成 URL 后,我运行以下行:

js <- fromJSON(base::url(URL_1))

问题:

搜索“term1”或“term2”的正确语法是什么。您能否提供网址的查询块作为示例(例如“&q='Alsophis%20antiguae'”)?

非常感谢

解决方法

如果有人感兴趣,正确的语法是 \"term1\"+OR\"term2\"。 这种语法似乎也适用于 AND。

双引号可以正常工作,而单引号似乎会产生错误的结果。所以应该使用单引号来分隔字符串,而不是在查询中。

以下代码生成一个工作查询

term1 <- "aaaa"
term2 <- "bbbb"
dummy.query <- paste0("\"",term1,"\"","+OR",# works with "+AND"
                      "\"",term2,"\"") 

然后,如果 key 是您的 API 密钥,而 cx 是您的自定义谷歌搜索引擎的 ID,则完整的工作网址为:

URL = paste0("https://www.googleapis.com/customsearch/v1?key=",key,"&cx=",cx,"&q=",dummy.query)