如何使用JPA和LIKE“%value%”搜索Google AppEngine数据存储区?

时间:2013-10-30 03:49:23

标签: java google-app-engine jpa google-cloud-datastore datanucleus

如何使用JPA和LIKE对Google AppEngine数据存储区执行全文搜索?我尝试了以下但是它出错了。

错误

  

引起:com.google.appengine.datanucleus.query.DatastoreQuery $ UnsupportedDatastoreFeatureException:查询<SELECT s FROM Study s WHERE description like :desc>出现问题:通配符必须出现在表达式字符串的末尾(仅支持前缀匹配)

代码

    TypedQuery<Study> tq = emf.createQuery(query, Study.class);
    if (hasKeywords) tq.setParameter("desc", "%" + keywords + "%");

我尝试删除第一个%,但它确实有效。但这并不是很有用。 description字段是一个字符串,而不是blob。

版本

应用服务引擎的API-1.0-SDK-1.8.6.jar

1 个答案:

答案 0 :(得分:1)

这是一个已知的限制。您想要做的是使用他们的Search APIs进行全文搜索。

您可以编写实体修改侦听器,每次修改实体时都会更新搜索索引。然后,此侦听器可以对将更新搜索索引的作业(通过task queues)进行排队。

现在,在显示搜索框的屏幕中,您可以使用搜索API来获取结果。

...

或者,另一种方法是使用仅前缀搜索查询。