谷歌应用引擎上的键空间结构如下 香蕉a3fadawsgdg 香蕉hrgsgsgsdgs 香蕉-regsgsdgsgg 番茄-fsfg33424ff 番茄-dsfgsgasdgs
即有一个类型和一个编码成一个字符串的唯一部分(不,这不是 GAE 类型,它是我们编造的类型)。 现在的问题是如何使用 GAE 范围查询检索所有 banana-...... 键。
为此,我需要尽可能低的 key ,可能是“banana-00000000000”和可能是最高的 key ,可能是“bananna-zzzzzzzzzz”。但是,由于存在 unicode,因此可能必须使用更有趣的代码点。而且,由于这是应用程序引擎,询问而不是盲目尝试是有意义的。
最佳答案
您可能不需要知道可能的最高 key 。
对于范围查询,您可以使用 banana.
作为上限(.
是紧跟在 -
之后的 ASCII/unicode 字符)。
如果您确实需要知道最高可能的 key ,那么首先它取决于第二部分中允许的字符数(如果它是可变的,则选择它可能的最大数字),然后 IIRC 0xFFFF 可以合法地出现在 UCS-2 中/UTF-16,但不是定义的代码点,因此可能会被拒绝。所以尝试用 z
代替,如果它有效,那么它就有效。如果 U+FFFD
(替换字符)可能足够接近 BMP 的顶部,因为 U+FFFE
被故意取消分配,以便 BOM U +FEFF
可用于指示字节顺序。
我不知道 Datastore 是否/如何处理关键字符串比较中的非 BMP 代码点。
关于java - GAE/J 范围查询中最大可能的键字符串是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5607656/