IN查询Google App Engine数据存储区Java,其优先级基于列表中匹配关键字的数量

克里希南·特林格(Krishnan Tringer)

我们在数据存储区中将标签的种类列为实物,并且具有标签词的列表,我们要过滤数据存储区匹配项或大小写,并根据匹配关键字的数量对其进行排序

我们如何在App Engine查询平台Java中做到这一点,如果您有任何想法,请帮助我们。

请找到型号

考虑模型

public class Car {

  String id;  

  String name;

  String model;

  String manufacture;

  int year;

  List<String> tags;

}  

数据库结构也是如此

List<String> searchKeyword =  Arrays.asList(q.split(","));

Query query = new Query("Car");
query.setFilter(new FilterPredicate("tags",FilterOperation.IN,searchKeyword);
List<Entity> entities = ds.prepare(query).asList(withLimit(10));

例如,在这种情况下,q = royal,coupe

结果应该与显示在顶部的两个关键字都匹配,并在后面紧跟一个关键字。

Caterham 7-一个关键字Nissan 370Z-匹配两个关键字

输出日产370z Caterham 7

新闻的相同内容属于汽车模型,也具有标签,搜索也应以相同的方式在该处工作

新闻将包含标题,描述,标签,图像,视频

谢谢克里希南

帕特里克·科斯特洛

无法在数据存储中本地执行此操作。IN在数据存储区中的工作方式是,它会针对列表中的每个项目发出一个查询,然后提供结果的并集(实际上,它使用的析取范式App Engine源代码))。

相反,您可以自己发出查询以保证所需的顺序(首先使用AND过滤器查询与N个标记匹配的结果,然后依次查询N-1,N-2,...)。

对于两个标签,它看起来像:

List<String> searchKeyword = Arrays.asList(q.split(","));

Query query = new Query("Car");
query.setFilter(CompositeFilter.and(Arrays.asList(
    new FilterPredicate("tags", FilterOperation.EQUAL, searchKeyword.get(0)),
    new FilterPredicate("tags", FilterOperation.EQUAL, searchKeyword.get(1)))));

List<Entity> entities = ds.prepare(query).asList(withLimit(10));

query.setFilter(CompositeFilter.or(Arrays.asList(
    new FilterPredicate("tags", FilterOperation.EQUAL, searchKeyword.get(0)),
    new FilterPredicate("tags", FilterOperation.EQUAL, searchKeyword.get(1)))));
entities.addAll(ds.prepare(query).asList(withLimit(10));

显然,这仅适用于两个标签,但可以推广到更多方面。您可能还应该使用异步API,以便可以并行发出所有查询。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Google App Engine数据存储区关键字段中的“ name =“代表什么?

来自分类Dev

Google App Engine数据存储区查询返回陈旧数据

来自分类Dev

Google App Engine NDB查询

来自分类Dev

查询所有实体的Google App Engine数据存储区

来自分类Dev

在Google App Engine上运行数据存储区查询

来自分类Dev

在Google App Engine数据存储区上执行大型查询

来自分类Dev

如何从Google App Engine(Java)数据存储区中的子实体查询父实体?

来自分类Dev

在Google App Engine中查询日期时间

来自分类Dev

在DataStore Google App Engine中执行IN查询

来自分类Dev

使用Java随机查询Google App Engine数据存储区实体

来自分类Dev

Google App Engine Java数据存储区查询-是否限制结果?

来自分类Dev

Google App Engine Java数据存储区查询-是否限制结果?

来自分类Dev

Google App Engine JPA祖先查询

来自分类Dev

Google App Engine PHP路由-查询参数

来自分类Dev

如何从Google App Engine NDB更新查询?

来自分类Dev

Google App Engine数据存储-测试查询失败

来自分类Dev

Google App Engine GQL查询-不带年份的日期查询

来自分类Dev

在Google App Engine中通过Python查询Google Bigquery

来自分类Dev

Google App Engine数据存储区Jinja2查询未显示

来自分类Dev

如何在页面上显示查询数量?(Google App Engine)

来自分类Dev

在Google App Engine中,如何使用python通过boolean查询?

来自分类Dev

如何在Google App Engine中查询属性的属性?

来自分类Dev

Google App Engine中的数据存储区与Cloud SQL

来自分类Dev

Google App Engine数据存储区中的多线程

来自分类Dev

Google App Engine-查询包含值的数组

来自分类Dev

在Google App Engine中使用多个ID参数进行查询

来自分类Dev

Google App Engine NDB查询和超出的内存

来自分类Dev

Google App Engine-查询包含值的数组

来自分类Dev

Google App Engine:定义自定义ID和查询

Related 相关文章

  1. 1

    Google App Engine数据存储区关键字段中的“ name =“代表什么?

  2. 2

    Google App Engine数据存储区查询返回陈旧数据

  3. 3

    Google App Engine NDB查询

  4. 4

    查询所有实体的Google App Engine数据存储区

  5. 5

    在Google App Engine上运行数据存储区查询

  6. 6

    在Google App Engine数据存储区上执行大型查询

  7. 7

    如何从Google App Engine(Java)数据存储区中的子实体查询父实体?

  8. 8

    在Google App Engine中查询日期时间

  9. 9

    在DataStore Google App Engine中执行IN查询

  10. 10

    使用Java随机查询Google App Engine数据存储区实体

  11. 11

    Google App Engine Java数据存储区查询-是否限制结果?

  12. 12

    Google App Engine Java数据存储区查询-是否限制结果?

  13. 13

    Google App Engine JPA祖先查询

  14. 14

    Google App Engine PHP路由-查询参数

  15. 15

    如何从Google App Engine NDB更新查询?

  16. 16

    Google App Engine数据存储-测试查询失败

  17. 17

    Google App Engine GQL查询-不带年份的日期查询

  18. 18

    在Google App Engine中通过Python查询Google Bigquery

  19. 19

    Google App Engine数据存储区Jinja2查询未显示

  20. 20

    如何在页面上显示查询数量?(Google App Engine)

  21. 21

    在Google App Engine中,如何使用python通过boolean查询?

  22. 22

    如何在Google App Engine中查询属性的属性?

  23. 23

    Google App Engine中的数据存储区与Cloud SQL

  24. 24

    Google App Engine数据存储区中的多线程

  25. 25

    Google App Engine-查询包含值的数组

  26. 26

    在Google App Engine中使用多个ID参数进行查询

  27. 27

    Google App Engine NDB查询和超出的内存

  28. 28

    Google App Engine-查询包含值的数组

  29. 29

    Google App Engine:定义自定义ID和查询

热门标签

归档