情况:
我正在使用谷歌自定义搜索引擎,谷歌云平台和R来搜索给定术语出现的网页数量。由于存在给定术语的同义词,我试图获得给定术语或的网页数量它的同义词出现在("or")
问题:
我试图用几种不同的方式来表达查询,所有这些都产生了不连贯的结果(即带有"term1"的网页数量;比;含有"term1"的网页数目或"term2")。
以下是我尝试过的配方(这里terms 1 = Alsophis antiguae, terms 2 = Alsophis leucomelas):
URL_1 <- paste0(URL, key, "&cx=", cx, "&q='",
URLencode("Alsophis antiguae | Alsophis leucomelas") , "'")
URL_2 <- paste0(URL, key, "&cx=", cx, "&q='",
URLencode("Alsophis antiguae OR Alsophis leucomelas") , "'")
URL_3 <- paste0(URL, key, "&cx=", cx, "&q='",
"Alsophis%20antiguae", "OR",
"Alsophis%20leucomelas", "'")
URL_4 <- paste0(URL, key, "&cx=", cx, "&q='",
"Alsophis%20antiguae", "%20OR%20",
"Alsophis%20leucomelas", "'")
URL_5 <- paste0(URL, key, "&cx=", cx, "&q='",
"Alsophis%20antiguae", "'", "OR",
"'", "Alsophis%20leucomelas", "'")
生成URL后,运行以下行:
js <- fromJSON(base::url(URL_1))
:
搜索'"term1"的正确语法是什么?或"term2"。您能提供一个URL的查询块作为示例(例如"&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是:
URL = paste0("https://www.googleapis.com/customsearch/v1?key=", key,
"&cx=", cx,
"&q=", dummy.query)