Google App Engine和SQL LIKE

时间:2010-02-26 09:41:49

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

有没有办法用类似于SQL LIKE语句的过滤器查询GAE数据存储区?例如,如果一个类有一个字符串字段,并且我想查找该字符串中具有某个特定关键字的所有类,我该怎么做? 看起来JDOQL的匹配()不起作用......我错过了什么?

欢迎任何评论,链接或代码片段

2 个答案:

答案 0 :(得分:2)

正如GAE / J文档所说,BigTable没有这样的原生支持。您可以将JDOQL String.matches用于“something%”(即startsWith)。这就是全部。否则在内存中评估它。

答案 1 :(得分:1)

如果要检查的项目很多,则要避免加载它们。最好的方法可能是将输入分解为写入时间。如果你只是用整个单词搜索那么这很容易

例如,“Hello world”变为“Hello”,“world” - 只需将两者都添加到多值属性中。如果你有很多文本,你想避免加载多值属性,因为你只需要它来进行索引查找。您可以通过创建“关系索引实体”来执行此操作 - 有关详细信息,请参阅bret slatkins Google IO talk。

您可能还想将输入分解为3个字符,4个字符等字符串或者干掉单词 - 也许是使用lucene stemmer。