需要使用Google App Engine文本搜索按月过滤实体而不是完整的日期值(例如生日)。在验证GAE文档时,我认为不可能直接按月查询日期字段。
因此,为了按月/日过滤它们,我们考虑将每个日期子值(如日期(DD),月(MM)和年(YYYY))保存为单独的NUMBER字段以及完整的日期字段。
我在本地验证我们可以通过这样保存来实现。但是,当我们想要查询日期子值时,这是通过拆分每个字段来保存日期的正确方法吗?
除GAE文本搜索中的10GB大小限制外,每个文档的字段数是否有任何已知/未知限制?
请建议我。
谢谢, 纳雷什
答案 0 :(得分:0)
NUMBER或DATE字段唯一有意义的时间是您需要查询值范围。在其他情况下,它们是浪费。
我无法从您的问题中确切地知道您想要运行哪些查询。您是在寻找一个月的(单个)特定日期(例如,1月6日 - 任何一年)吗?或者只是“6月的任何事情(再次,不考虑年份)”?还是日期范围:1月20日到2月19日?还是7月1日到9月30日?
如果是一个范围,则NUMBER值可能有意义。但如果它只是一个特定的月份,或单个月和一个月的组合,那么你最好将月份和日期存储为单独的ATOM字段。
任何看起来像数字,但实际上不会通过数值范围搜索或进行算术运算的东西,实际上并不是一个数字,并且可能最好存储为ATOM。例如,电话号码,邮政编码(除非你非常聪明,并希望做一些像“旧金山的所有邮政编码看起来像941xx”这样的东西 - 但即便如此,如果那是你想做的,你可能会更好只是将“941”前缀存储为ATOM)。