2010-02-23 12 views
5

nie mogę znaleźć nic w docs wolnej zasady chodzi o to, ale wydaje się, że ograniczenie liczby wyników do 100. Na przykład:jak zwiększyć wynik freebase API ograniczyć

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

zwraca tylko 100 wyników podczas gdy

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

Mówi, że jest 6244 wyników. Czy ktoś wie, jak zdobyć resztę? Wiem, że mogę ograniczyć zapytania według jakiegoś parametru, takiego jak kraj, a następnie zagregować wyniki, ale wolę coś mniej hackowego.

Odpowiedz

8

Możesz użyć właściwości limit, aby uzyskać więcej wyników. Jednak pobieranie dużych liczb może dać ci przekroczenie limitu czasu zapytania.

Bardziej niezawodnym sposobem jest użycie właściwości cursor. Podaj wartość cursor wartości true. Dostaniesz partię wyników, ale w odpowiedzi dostaniesz również nową wartość dla cursor. Powtórz zapytanie, ale zastąp nową wartością cursor, aby uzyskać kolejną porcję wyników. W ten sposób możesz pobrać nawet bardzo duży zestaw danych.

Więcej informacji: http://www.freebase.com/docs/mql/ch04.html#envelopeparameters

+0

Posługując się ich przykładem otrzymałem następujący komunikat: "Kursor kluczy jest zarezerwowanym słowem", nie wydaje się już działać. – Domenic

+0

To nadal działa. Kursor przesuwa się na kopercie, a nie w samym zapytaniu (należy postępować zgodnie z linkiem podanym w dokumentacji Peter). –

+0

Ah! Dzięki Peter, zastanawiałem się, jak uzyskać wartość kursora w odpowiedzi! –

0

Współpracownik pomógł mi wymyślić ten jeden. Pomyślałem, że powinienem użyć parametru limit, ale nie umieściłem go we właściwym miejscu. Oto, jak to zrobić:

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

Należy naprawdę zaktualizować OP lub wypowiedzieć się na nim, zamiast dostarczać odpowiedzi! –