GAE文本搜索中部分日期查询的优化方式是什么?

时间:2016-06-25 18:04:18

标签: google-app-engine google-cloud-datastore gae-search

需要使用Google App Engine文本搜索按月过滤实体而不是完整的日期值(例如生日)。在验证GAE文档时,我认为不可能直接按月查询日期字段。

因此,为了按月/日过滤它们,我们考虑将每个日期子值(如日期(DD),月(MM)和年(YYYY))保存为单独的NUMBER字段以及完整的日期字段。

我在本地验证我们可以通过这样保存来实现。但是,当我们想要查询日期子值时,这是通过拆分每个字段来保存日期的正确方法吗?

除GAE文本搜索中的10GB大小限制外,每个文档的字段数是否有任何已知/未知限制?

请建议我。

谢谢, 纳雷什

1 个答案:

答案 0 :(得分:0)

NUMBER或DATE字段唯一有意义的时间是您需要查询值范围。在其他情况下,它们是浪费。

我无法从您的问题中确切地知道您想要运行哪些查询。您是在寻找一个月的(单个)特定日期(例如,1月6日 - 任何一年)吗?或者只是“6月的任何事情(再次,不考虑年份)”?还是日期范围:1月20日到2月19日?还是7月1日到9月30日?

如果是一个范围,则NUMBER值可能有意义。但如果它只是一个特定的月份,或单个月和一个月的组合,那么你最好将月份和日期存储为单独的ATOM字段。

任何看起来像数字,但实际上不会通过数值范围搜索或进行算术运算的东西,实际上并不是一个数字,并且可能最好存储为ATOM。例如,电话号码,邮政编码(除非你非常聪明,并希望做一些像“旧金山的所有邮政编码看起来像941xx”这样的东西 - 但即便如此,如果那是你想做的,你可能会更好只是将“941”前缀存储为ATOM)。