所以假设我有100.000个 Foo 类型的实体。 Foo有一个索引的属性 bar 。现在,对于特定的Foo A,我希望在按条形排序所有Foos时获得最接近A的10个Foos。
问题是,我不想手动执行此操作,因为它会因为100k +实体而非常慢。
一个想法是使用偏移和限制,如下所示:
ofy().load().type(Foo.class).order("-bar").offset(offset).limit(limit).list();
但这要求我知道我的Foo A的位置,我不知道。
我有一个工作解决方案,这是一个单独的权利,只存储所有Foos的位置,并每分钟更新一次表。它变得非常慢并导致OutOfMemoryError,所以我需要一些不同的东西。
有人想拍这个吗?
答案 0 :(得分:1)
您可以这样做:
List<Foo> biger = ofy().load().type(Foo.class).filter("bar >=", A.getBar()).order("bar").limit(10).list();
List<Foo> lower = ofy().load().type(Foo.class).filter("bar <", A.getBar()).order("-bar").limit(10).list();
List<Foo> closest = getClosest(A, biger, lower);