Google App Engine:是否可以执行Gql LIKE查询?

真的很简单。在SQL中,如果我想在文本字段中搜索几个字符,则可以执行以下操作:


SELECT blah FROM blah WHERE blah LIKE '%text%'

App Engine的文档没有提及如何实现这一目标,但是可以肯定这是一个足够普遍的问题?


蛊毒传说
浏览 584回答 3
3回答

米琪卡哇伊

BigTable是App Engine的数据库后端,它将扩展到数百万条记录。因此,App Engine不允许您执行任何会导致表格扫描的查询,因为对于填充良好的表格而言,性能可能会令人恐惧。换句话说,每个查询都必须使用索引。这就是为什么你只能做=,>和<查询。(实际上,您也可以执行!=此操作,但是API会使用>和<查询的组合来执行此操作。)这也是开发环境监视您执行的所有查询并自动将丢失的索引添加到index.yaml文件中的原因。无法为LIKE查询建立索引,因此根本无法使用。观看此Google IO会话,以获取更好,更详细的解释。

慕森王

您需要使用搜索服务来执行类似于SQL的全文搜索查询LIKE。Gaelyk提供了特定于域的语言来执行更加用户友好的搜索查询。例如,下面的代码片段将查找前十本书,这些书是从最新的书中排序的,书名包含fern 且类型完全匹配thriller:def documents = search.search {&nbsp; &nbsp; select all from books&nbsp; &nbsp; sort desc by published, SearchApiLimits.MINIMUM_DATE_VALUE&nbsp; &nbsp; where title =~ 'fern'&nbsp; &nbsp; and genre =&nbsp; 'thriller'&nbsp; &nbsp; limit 10}Like编写为Groovy的match运算符=~。它还支持诸如此类的功能distance(geopoint(lat, lon), location)。
打开App,查看更多内容
随时随地看视频慕课网APP