2017-06-21 38 views
0

在我的项目中,我必须使用Eventregistry.org events API来搜索特定关键字的特定文章。EventRegistry.org api多个关键字的查询字符串

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

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

这是我的网址:

http://eventregistry.org/json/article?ignoreKeywords=&keywords=surface%20ipad&lang=eng&action=getArticles&articlesSortBy=date&resultType=articles&articlesCount=20 

在这里,您可以测试API 这是github

回答

1

好Python的回购,其文档并不过分信息,至少可以这样说。

看起来他们正在使用某种查询语言,您可能可以通过调试Python脚本生成的请求来弄清楚什么是外观,但是如果您不熟悉Python,请尝试使用their web interface,显然它支持布尔条件(ORANDNOT,后者被表示为-),其被构成为JSON结构:

检查您的浏览器的网络控制台来检查生成的URL,它们会包含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" 
     ] 
    } 
    } 
} 

所以最终的URL可能看起来像这样:

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"]}}} 
+0

感谢的人,它的工作! – Lucho