如何使用 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/