EventRegistry.org api查询多个关键字的字符串

时间:2017-06-21 18:56:08

标签: python api url

在我的项目中,我必须使用Eventregistry.org events API搜索具有特定关键字的特定文章。

问题是,如果我添加多个关键字,它似乎会执行" AND"搜索而不是" OR"。 (搜索ipad单独~8k结果,搜索表面单独~40k结果,搜索ipad表面一起得到9结果)

我正在使用cakephp 3,但我认为语言不是问题,我认为是最终的网址。我去了Python项目并找到了一些Query.AND(params)和Query.OR(params)所以我认为这可以做到了吗?但是我不知道Python。

这是我的网址:

Readonly<T>

在这里你可以测试API 这是github

上的Python回购

1 个答案:

答案 0 :(得分:1)

嗯,至少可以说,他们的文档并没有过多的信息。

看起来他们正在使用某种查询语言,您可以通过调试Python脚本生成的请求来弄清楚事情的样子,但如果您不熟悉Python,请尝试使用{{3}相反,显然它支持布尔条件(ORANDNOT,后者表示为-),它们被组合成一个JSON结构:

检查您的浏览器网络控制台以检查生成的网址,它们将包含一个query密钥,其中包含一个JSON字符串,如下所示:

{"$query":{"$and":[{"$or":[{"keyword":{"$and":["ipad"]}},{"keyword":{"$and":["surface"]}}]}]}}
{
  "$query": {
    "$and": [
      {
        "$or": [
          {
            "keyword": {
              "$and": [
                "ipad"
              ]
            }
          },
          {
            "keyword": {
              "$and": [
                "surface"
              ]
            }
          }
        ]
      }
    ]
  }
}

这与博客文章显示的内容略有不同,但似乎其中显示的更紧凑的变体也有效:

{"$query":{"keyword":{"$or":["ipad","surface"]}}}
{
  "$query": {
    "keyword": {
      "$or": [
        "ipad",
        "surface"
      ]
    }
  }
}

所以最终的网址可能如下所示:

http://eventregistry.org/json/article?action=getArticles&articlesCount=20&articlesSortBy=date&resultType=articles&query={"$query":{"keyword":{"$or":["ipad","surface"]}}}
http://eventregistry.org/json/article
    ?action=getArticles
    &articlesCount=20
    &articlesSortBy=date
    &resultType=articles
    &query={"$query":{"keyword":{"$or":["ipad","surface"]}}}