Google App Engine 和 SQL LIKE

Posted

技术标签:

【中文标题】Google App Engine 和 SQL LIKE【英文标题】:Google App Engine and SQL LIKE 【发布时间】:2011-01-21 09:21:58 【问题描述】:

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

欢迎提供任何 cmets、链接或代码片段

【问题讨论】:

相关:***.com/questions/47786/… 【参考方案1】:

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

【讨论】:

感谢您的回复。 startsWith() 的坏处是它不能与其他字段的不等式运算符一起使用,所以无论如何我都必须在内存中求值。【参考方案2】:

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

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

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

【讨论】:

您可以在我的博客中找到 Java 和 Python 的关系索引实体示例:novyden.blogspot.com/2011/02/…novyden.blogspot.com/2011/09/…

以上是关于Google App Engine 和 SQL LIKE的主要内容,如果未能解决你的问题,请参考以下文章

Google App Engine 和 SQL LIKE

Google App Engine 中的 Datastore 与 Cloud SQL

Google App Engine:为有 SQL 背景的人介绍他们的 Data Store API?

Google App Engine 和 Cloud SQL:在“读取初始通信数据包”时失去与 MySQL 服务器的连接

使用 Google APP Engine 的 Cloud SQL 连接限制

Google App Engine .Net Core 2.0 应用无法访问 Google Cloud SQL 数据库