在 Google App Engine 数据存储中搜索以前缀开头的字符串

Search a string beginning with a prefix in Google App Engine Datastore

我想搜索名称以特定字符串开头的所有实体,这在 Datastore 中可行吗?

我试过这个:

q = datastore.NewQuery("Places").Filter("Name > ", "a")

但是不行。

如果这不可能,您可以向我推荐什么替代解决方案?大查询? App Engine 上的 BigTable 或其他服务?

这是可能的,但要结合使用 2 个不等式过滤器。

假设您要列出具有 "li" 前缀的 Places。这可以用一个查询来描述,该查询列出了大于(或等于)"li" 小于 [= 之后的下一个字符串的前缀=15=] 字典序:"lj".

GQL 是这样的:

SELECT * FROM Places WHERE Name > 'li' AND Name < 'lj'

用 Go 编码看起来像这样:

q = datastore.NewQuery("Places").Filter("Name >", "li").Filter("Name <", "lj")

这将列出 Places,其中名称例如:

liam
lisotto
lizst

但会排除以下名称:

abc
ljoi
lj
qwerty

需要注意的一件事:小写字母和大写字母的字典顺序不同,因此例如 "List" 小于 "li"(即使 "list" 大于 "li")!