我正在将Google App Engine(Java)与JDO结合使用。我该如何做相当于的JDO

select * from table where field like '%foo%'

到目前为止,我唯一看到的建议是使用Lucene。对于开箱即用的GAE无法实现此基本功能,我感到有些惊讶。

最佳答案

您无法在App Engine上进行此类子字符串搜索。这样做的原因是App Engine数据存储区构建为可扩展的,并且拒绝执行索引无法满足的任何查询。对这样的查询建立索引几乎是不可能的,因为它需要在每个记录的'field'属性中搜索整个匹配项。您在其上运行此查询的任何关系数据库都将通过执行全表扫描并逐个检查每条记录来执行它-至少可以说不可扩展。

您已经发现,解决方案是使用全文索引,例如Lucene。有一些库可以在App Engine上运行Lucene,例如GAELucene。这也使您能够进行适当的全文本搜索,而不是幼稚的子字符串匹配。

关于google-app-engine - 使用Google App Engine和JDO进行全文搜索?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1496023/

10-10 03:28