我有一个对象Person,其字段为firstName,lastName等。 找到可用人员名单后。我需要找到firstName包含子字符串“ho”的人。我怎么能这样做?
我会使用LIKE和外卡,但我的应用程序托管在谷歌应用程序引擎上,所以我不能在SQL查询中使用LIKE。在没有工作之前尝试过。有没有建议如何在不遍历列表中的每个对象的情况下执行此操作?
答案 0 :(得分:1)
您确实需要以与关系数据库不同的方式来考虑数据存储。这实际上意味着您必须聪明地了解如何存储数据才能获得数据。如果没有全文搜索,您可以使用策略模拟全文搜索,方法是创建可搜索单词的密钥列表并将其存储在实体组中的子实体中。然后,您可以构造查询以返回与“查询字符串”匹配的父对象的键。这使您可以在没有全文搜索开销的情况下进行索引。
这是使用Objectify的一个很好的例子,但你可以使用任何东西来完成相同的事情(JPA,JDO,低级API)。
http://novyden.blogspot.com/2011/02/efficient-keyword-search-with-relation.html
答案 1 :(得分:0)
如果您使用的是基于BigTable的数据存储区,则至少不能这样做。