GAE - Java - 查询过滤器“LIKE”的最佳方式

时间:2013-08-28 11:14:21

标签: java google-app-engine google-cloud-datastore


在我的GAE数据存储区中,我有名字,姓氏和国家的“人”实体

我需要做一个像这样的查询 "SELECT * FROM Country WHERE name LIKE '%spa%'"

This answer提供了这样的解决方案:

Query query = new Query("Person");
query.addFilter("name", FilterOperator.GREATER_THAN_OR_EQUAL, "pe");
query.addFilter("name", FilterOperator.LESS_THAN, "pe"+ "\uFFFD");

但我没有任何成功,总是返回0结果......我错过了什么?

似乎另一种选择是使用“Search API”,但是......如何将我的数据存储区中“人员”的所有数据迁移到新的Document进行搜索?< / p>

任何解决方案?

由于

1 个答案:

答案 0 :(得分:1)

答案与你的问题不一样。他们提供的查询是前缀查询:即“pe”开头的所有名称。您似乎想要查询在任何地方包含“pe”的所有名称,由于在该问题的接受答案中解释的原因,这是不可能的。

Search API确实是这样做的答案,并且您发布的链接中包含有关如何创建表示数据存储对象的文档的详细信息。 (请注意,这不是迁移:您的数据应保留在数据存储区中,Search API是一个单独的系统,仅用于全文搜索。)