Я пытаюсь найти все туристические направления из Freebase API. Согласно документации, я использую курсор и предельные параметры. Я начинаю с курсора в 0 и предел 100, затем добавляю 100 к курсору на каждой итерации. Проблема в том, что я получаю только 76 результатов таким образом. В базе данных Freebase должно быть 1500 мест для поездок.Отслеживание путешествий в Freebase
Документация:
https://developers.google.com/freebase/v1/search
Вот мой код:
<?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;
Он печатает 76.
Спасибо Том, я решил проблему с помощью MQL. Я не думаю, что в моем коде есть ошибка. Я попытался вызвать API вручную из браузера, и я не смог получить больше результатов tann 76. Я думаю, что может быть ошибка в API поиска. Но MQL API работает, поэтому я использовал это. –
Я протестировал его, прежде чем я написал свой ответ и получил полные результаты из 100 результатов для каждой из первых двух страниц, используя OpenRefine для извлечения и анализа результатов. –