java - 如何使用 JPA 和 LIKE "%value%"搜索 Google AppEngine 数据存储?

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

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

错误

Caused by: com.google.appengine.datanucleus.query.DatastoreQuery$UnsupportedDatastoreFeatureException: Problem with query <SELECT s FROM Study s WHERE description like :desc>: Wildcard must appear at the end of the expression string (only prefix matches are supported)

代码

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

我尝试删除第一个 % ,并且成功了。但这并不是很有用。描述字段是一个字符串,而不是一个 blob。

版本

appengine-api-1.0-sdk-1.8.6.jar

最佳答案

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

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

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

...

或者,另一种选择是使用仅前缀的搜索查询。

关于java - 如何使用 JPA 和 LIKE "%value%"搜索 Google AppEngine 数据存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19673497/

相关文章:

java - 在面板顶部添加面板并且两者都可见

node.js - 部署到 App Engine 后运行 Sequelize 迁移

java - 如何使用 Blobstore 输入流读取连续的换行分隔文本行?

java - JPA 清除缓存以读取一项

hibernate 尝试序列化标记为@Transient 的字段

java - 调用未覆盖方法的语法

java - 使用 MigLayout 将两个组件叠放在一起

java - Java 中使用 if else 逻辑的自动化测试流程

python - 安装了 google cloudsdk 后运行 Nostests --with-gae 时出错

java - Spring-Data-Jpa Repository - 实体列名上的下划线