0

如何使用 JPA 和 LIKE 对 Google AppEngine Datastore 执行全文搜索?我尝试了以下但它给出了一个错误。

错误

原因: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 + "%");

我尝试删除第一个%,它起作用了。然而,这不是很有用。描述字段是一个字符串,而不是一个 blob。

版本

appengine-api-1.0-sdk-1.8.6.jar

4

1 回答 1

1

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

您可以编写一个实体修改侦听器,该侦听器在每次修改实体时更新搜索索引。然后,此侦听器可以将更新搜索索引的作业(通过任务队列)排队。

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

……

或者,替代方法是使用仅前缀搜索查询。

于 2013-10-30T05:39:48.493 回答