2010-02-26 118 views
1

有什么方法可以用类似于SQL LIKE语句的过滤器来查询GAE数据存储吗?例如,如果一个类有一个字符串字段,并且我想查找所有在该字符串中具有特定关键字的类,那我该怎么做? 它看起来像JDOQL的匹配()不工作...我错过了什么?Google App Engine和SQL LIKE

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

+2

相关:http://stackoverflow.com/questions/47786/google-app-engine-is-it-possible-to-do-a-gql-like-query – 2010-02-26 09:54:09

回答

2

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

+0

感谢您的回复。 startsWith()的坏处在于它不能用于其他字段上的不等式运算符,所以我将不得不在内存中进行评估。 – 2010-03-01 14:47:23

1

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

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

您可能还想将输入分解为3个字符,4个字符等字符串或干扰词语 - 可能是使用lucene词干分析器。

+0

您可以在我的博客中找到关于Java和Python的Relation Index Entity示例: http://novyden.blogspot.com/2011/02/efficient-keyword-search-with-relation.html http:// novyden。 blogspot.com/2011/09/efficient-keyword-search-with-relation.html – topchef 2011-09-23 19:53:24