我用Java编写的小脚本,它测试参数limit
有四个不同的值(10,100,1000和10000)查询使用的Open Graph API和脸谱用户的新闻提要 ,当RestFB客户端 。 正如你所看到的,它有一个奇怪的行为...
场景:
public static void main(String[] args) {
// vars
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
FacebookClient client = new DefaultFacebookClient(accessToken);
Connection<Post> home;
List<Post> postList;
Map<String, Post> postMap;
int i;
// limits to test
String[] limits = {"10", "100", "1000", "10000"};
for (String limit : limits) {
// init list and map (looking for duplicate posts)
postList = new LinkedList<Post>();
postMap = new LinkedHashMap<String, Post>();
// get news feed
home = client.fetchConnection(id + "/home", Post.class, Parameter.with("limit", limit));
// going through pages
i = 1;
for (List<Post> page : home) {
for (Post post : page) {
// store into list
postList.add(post);
// store into map (unique post id)
postMap.put(post.getId(), post);
}
i++;
}
// sort posts by created time
Collections.sort(postList, new Comparator<Post>() {
@Override
public int compare(Post post1, Post post2) {
return post1.getCreatedTime().compareTo(post2.getCreatedTime());
}
});
// log
try {
FileWriter out = new FileWriter("log/output.txt", true);
out.write("LIMIT: " + limit + "\n");
out.write("\tPAGES: " + (i - 1) + "\n");
out.write("\tLIST SIZE: " + postList.size() + "\n");
out.write("\tMAP SIZE: " + postMap.size() + "\n");
out.write("\tOLDER POST: " + dateFormat.format(postList.get(0).getCreatedTime()) + "\n");
out.write("\tYOUGNER POST: " + dateFormat.format(postList.get(postList.size() - 1).getCreatedTime()) + "\n");
out.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
输出:
LIMIT: 10
PAGES: 7
LIST SIZE: 56
MAP SIZE: 56
OLDER POST: 2009-03-22 14:58:03
YOUGNER POST: 2012-05-11 15:48:49
LIMIT: 100
PAGES: 3
LIST SIZE: 174
MAP SIZE: 172
OLDER POST: 2012-01-12 23:01:34
YOUGNER POST: 2012-05-11 15:48:49
LIMIT: 1000
PAGES: 2
LIST SIZE: 294
MAP SIZE: 292
OLDER POST: 2009-03-22 14:58:03
YOUGNER POST: 2012-05-11 15:48:49
LIMIT: 10000
PAGES: 2
LIST SIZE: 294
MAP SIZE: 292
OLDER POST: 2009-03-22 14:58:03
YOUGNER POST: 2012-05-11 15:48:49
解释和问题:
很显然, 你不能让所有的职位用户已经在他的新闻馈送了,因为他的帐户创建。 被限制的限制?
随着
limit
的100,1000和10000,我必须每次都得全返回新闻提要中的两个重复的职位 (174 - 172 = 194 - 192)。 为什么? 我从来没有见过同一职位上两次我个人的新闻源...随着(只有用),一个
limit
的100,上了年纪后我是否会在2012年创建的,同时的其他值limit
使查询检索这是在2009年创建的信息,我可以理解,与上limit
(1000或10000),查询检索旧帖子。 但是,为什么一个limit
的10使查询检索旧的岗位比100限制查询 ?最后但并非最不重要的一点: 我没有得到相同数量的职位 。 很显然,越
limit
高,检索到的帖子的数量越多是高的。 我想的第一件事,是较小的唯一后果limit
是页面上数(这是案件虽然),但检索到的帖子的数量不会改变。 但它确实。 为什么? 这就是说,职位的数目似乎与收敛limit
的100和1000,因为职位的数目是用相同limit
的1000和limit
的10000。
PS:指定一个since
和/或until
参数查询不会改变任何东西。
任何答案/评论是欢迎:)
干杯。
编辑:
这是我最好的回忆 :
LIMIT: 200
PAGES: 3
LIST SIZE: 391
MAP SIZE: 389
OLDER POST: 2012-01-27 14:17:16
YOUGNER POST: 2012-05-11 16:52:38
为什么200? 这是不是在任何地方指定文件 ?