首页 > 解决方案 > 自定义搜索引擎的“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, 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'”)?

提前谢谢了

标签: rgoogle-developers-consoleor-operator

解决方案


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

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

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

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

然后,如果key是您的 API 密钥和cx自定义 google 搜索引擎的 ID,则完整的工作 URL 是:

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

推荐阅读