GAE中的多值属性查询
类人{ @执着的 私有列表标签 = ArrayList() 我
想让用户根据他/她的标签查询一个人,所以我有这样的查询过滤器:
tags.contains(tagValue1)
,如果用户想要搜索多个标签,我只需添加到过滤器因此,如果用户正在搜索 3 个标签,则查询将为
tags.contains(tagValue1) && Tags.contains(tagValue2) && tag.contains(tagValue3)
我认为这种方法是错误的,因为数据存储区需要有一个包含 3 次标签属性的索引......如果用户一次搜索超过 3 个标签,那么它将被破坏。
执行此操作的正确方法是什么?你们有什么建议吗?
class Person{
@Persistent
private List tags = ArrayList()
}
I want to let the user query a person based on his/her tag, so I had my query filter like this:
tags.contains(tagValue1)
and if the user want to search for multiple tags, I would just add to the filter so if the user is searching for 3 tags, then the query would be
tags.contains(tagValue1) && tags.contains(tagValue2) && tags.contains(tagValue3)
I think this approach is wrong, because the datastore then needs to have an index that have the tags property three times... and if the user search for more than 3 tags at a time then it will be broken.
What's the proper way to do this? Do you guys have any suggestions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
无法回答 GAE/J 插件如何处理的具体细节,但稍微更好的查询将是
tags.contains(theTag) && (theTag == tagValue1 || theTag == tagValue2 || theTag == tagValue3)
所以“theTag”是一个变量。
Can't answer on the specifics of how GAE/J's plugin processes that but a marginally better query would be
tags.contains(theTag) && (theTag == tagValue1 || theTag == tagValue2 || theTag == tagValue3)
so "theTag" is a variable.