Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Freebase中对旅行目的地进行分页_Php_Google Api_Freebase - Fatal编程技术网

Php 在Freebase中对旅行目的地进行分页

Php 在Freebase中对旅行目的地进行分页,php,google-api,freebase,Php,Google Api,Freebase,我正在尝试从Freebase API获取所有旅游目的地。根据文档,我正在使用游标和限制参数。我从游标0开始,限制为100,然后在每次迭代中向游标添加100。问题是这样我只得到76个结果。Freebase数据库中应该有cca 1500个旅游目的地 文件: 这是我的密码: <?php require_once __DIR__ . '/vendor/autoload.php'; $apiKey = 'SUPER_SECRET_API_KEY'; use Guzzle\Http\Clien

我正在尝试从Freebase API获取所有旅游目的地。根据文档,我正在使用游标和限制参数。我从游标0开始,限制为100,然后在每次迭代中向游标添加100。问题是这样我只得到76个结果。Freebase数据库中应该有cca 1500个旅游目的地

文件:

这是我的密码:

<?php

require_once __DIR__ . '/vendor/autoload.php';

$apiKey = 'SUPER_SECRET_API_KEY';

use Guzzle\Http\Client;

//// GOOGLE FREEBASE
$client = new Client('https://www.googleapis.com');

$cursor = 0;
$limit = 100;
$results = array();

do {

    $request = $client->get('/freebase/v1/search');
    $request->getQuery()->set('key', $apiKey);
    $request->getQuery()->set('filter', '(all type:/travel/travel_destination)');
    $request->getQuery()->set('cursor', $cursor);
    $request->getQuery()->set('limit', $limit);
    $request->getQuery()->set('indent', 'true');
    $request->getQuery()->set('query', '');

    $response = $request->send()->json();

    foreach ($response['result'] as $result) {
        $results[] = $result;
    }

    $cursor += $limit;

} while (count($response['result']) > 0);

echo count($results);exit;

返回详尽的结果不是搜索API的预期用途,因此最好使用MQL或批量数据转储


由于第一个查询返回100个完整的结果,我假设您的PHP中有一个bug。如果非要我猜的话,我猜你要么在计算迭代次数,要么在计算上一次迭代中返回的结果数量,可能是后者。

返回详尽的结果不是搜索API的预期用途,因此最好使用MQL或批量数据转储


由于第一个查询返回100个完整的结果,我假设您的PHP中有一个bug。如果让我猜的话,我猜你要么在计算迭代次数,要么在计算上一次迭代返回的结果数量,可能是后者。

谢谢Tom,我已经使用MQL解决了这个问题。顺便说一句,我不认为我的代码中有错误。我尝试过从浏览器手动调用API,但我无法得到更多的结果。我认为搜索API中可能有一个bug。但是MQL API可以工作,所以我使用了它。我在编写答案之前对其进行了测试,在使用OpenRefine获取和解析结果的前两个页面中,每个页面都获得了100个结果的完整返回。感谢Tom,我使用MQL解决了这个问题。顺便说一句,我不认为我的代码中有错误。我尝试过从浏览器手动调用API,但我无法得到更多的结果。我认为搜索API中可能有一个bug。但是MQLAPI可以工作,所以我使用了它。我在编写答案之前对其进行了测试,并使用OpenRefine获取和解析结果,前两个页面中的每个页面都得到100个结果的完整返回。