2010-02-23 5 views
5

je ne trouve rien dans les documents de freebase à ce sujet, mais il semble qu'ils limitent le nombre de résultats à 100. Par exemple:comment augmenter freebase API résultat limite

[{ 
    "type":"/base/popstra/celebrity", 
    "name":null 
}] 

Renvoie uniquement 100 résultats alors que

[{ 
    "type":"/base/popstra/celebrity", 
    return:"count" 
}] 

Il y a 6244 résultats. Est-ce que quelqu'un sait comment obtenir le reste d'entre eux? Je sais que je peux limiter les requêtes par un paramètre comme le pays et ensuite agréger les résultats mais je préférerais quelque chose de moins hacky.

Répondre

8

Vous pouvez utiliser la propriété limit pour demander plus de résultats. Toutefois, l'extraction de grands nombres peut vous donner un délai d'attente de requête.

Une méthode plus fiable consiste à utiliser la propriété cursor. Passez une valeur cursor de true. Vous obtiendrez un lot de résultats, mais vous obtiendrez également une nouvelle valeur pour cursor dans la réponse. Répétez votre requête, mais remplacez-la par la nouvelle valeur cursor pour obtenir le lot de résultats suivant. De cette façon, vous pouvez même récupérer un très grand nombre de données.

Plus d'info: http://www.freebase.com/docs/mql/ch04.html#envelopeparameters

+0

En utilisant leur exemple j'ai reçu le message suivant "Key cursor est un mot réservé", ne semble plus fonctionner. – Domenic

+0

Cela fonctionne toujours. Le curseur va sur l'enveloppe, pas dans la requête elle-même (suivez le lien fourni par Peter à la documentation). –

+0

Ah! Merci Peter, je me demandais comment obtenir la valeur du curseur dans la réponse! –

0

Un collègue m'a aidé à comprendre celui-ci. Je pensais que je devrais utiliser le paramètre limit mais je ne l'ai pas mis au bon endroit. Voici comment faire:

[{ 
    "type":"/base/popstra/celebrity", 
    "name":null, 
    "limit":300 
}] 
+0

Vous devriez vraiment mettre à jour votre OP ou commenter, au lieu de fournir une réponse! –

Questions connexes