NYT文章搜索API未返回特定查询的结果

时间:2017-07-05 18:42:38

标签: api

我有一组查询,我正在尝试使用NYT文章搜索API获取web_urls。但我发现它适用于q2以下但不适用于q1。

q1:Seattle + Jacob Vigdor +华盛顿大学

q2:西雅图+雅各布维格多+华盛顿大学

如果您在网络浏览器中使用API​​密钥粘贴下面的网址,则会得到一个空的结果。

搜索q1的请求

api.nytimes.com/svc/search/v2/articlesearch.json?q=Seattle+Jacob%20Vigdor+the%20University%20of%20Washington&begin_date=20170626&api-key=XXXX

q1的空结果

{"响应" {"元" {"命中":0,"时间":27,"偏移":0},"文档":[]},"状态":" OK""版权":&# 34;版权所有(c)2013纽约时报公司。保留所有权利。"}

相反,如果您将以下内容粘贴到网络浏览器中(没有文章'查询中的'),您将获得非空结果

搜索q2的请求

api.nytimes.com/svc/search/v2/articlesearch.json?q=Seattle+Jacob%20Vigdor+University%20of%20Washington&begin_date=20170626&api-key=XXXX

q2的非空结果

{"响应" {"元" {"命中":1,"时间":22,"偏移":0},"文档&#34 ;: [{"的web_url":" HTTPS://www.nytimes.com/aponline/2017/06/26/我们/ ap-us-seattle-minimum-wage.html","摘要":"西雅图每小时15美元的最低工资法已经花费了城市的工作,星期一发布的一项研究与上周公布的另一项新研究相矛盾......"" lead_paragraph":"西雅图每小时15美元的最低工资法已经付出了成本周一公布的一项研究表明,这项城市工作与上周公布的另一项新研究相矛盾。"" abstract":null," print_page":null,"博客":[],"源":" AP""多媒体":[],"标题" {&# 34;主要":"对西雅图15美元最低工资的新研究表明它花费了工作"," print_headline":"西雅图的新研究' s $ 15最低工资表示工作成本"},"关键字":[]," pub_date":" 2017-06-26T15:16:2 8 + 0000"" DOCUMENT_TYPE":"物品"" news_desk":"无"" SECTION_NAME&#34 ;:" US"" subsection_name":空,"署名" {"人":[],"原& #34;:"由联合新闻","组织":"关联的新闻"}," type_of_material":"消息"" _id":" 5951255195d0e02550996fb3"" WORD_COUNT":643," slideshow_credits":空}]},&# 34;状态":" OK","版权":"版权所有(c)2013纽约时报公司。保留所有权利。"}

有趣的是,两个查询在api测试页面上都能正常工作 http://developer.nytimes.com/article_search_v2.json#/Console/

另外,如果您查看q2返回的以下文章,您会看到q1中的查询字词,华盛顿大学'它确实发生在它本应该返回这篇文章。 https://www.nytimes.com//aponline//2017//06//26//us//ap-us-seattle-minimum-wage.html

我对API的这种行为感到困惑。有什么想法会发生什么?我错过了什么吗?

2 个答案:

答案 0 :(得分:1)

感谢您的所有答案。下面我粘贴了我从NYT开发者那里得到的答案。

NYT的文章搜索API使用Elasticsearch。在线有很多关于Elasticsearch的查询语法的文档(它基于Lucene)。

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html#query-string-syntax

如果您想要包含“西雅图”,“Jacob Vigdor”和“华盛顿大学”的文章,请

“西雅图”和“Jacob Vigdor”和“华盛顿大学”

+“Seattle”+“Jacob Vigdor”+“华盛顿大学”

答案 1 :(得分:0)

我认为您需要将空格(%20)的编码更改为+(%2B):

在您的示例中,

q=Seattle+Jacob%20Vigdor+the%20University%20of%20Washington

当我从网站上的页面提交时,它使用%2B:

q=Seattle%2BJacob+Vigdor%2Bthe+University+of+Washington

你是如何编码的?解决此问题的一种方法是在URL编码之前用+替换空格。

此外,您可能需要将%20替换为+。 URL编码有各种方案,所以最好的方法取决于你是如何做的。