如何在Google数据存储区中有效地搜索实体

时间:2012-08-13 10:35:18

标签: google-app-engine google-cloud-datastore bigtable

我正在为应用程序(内部作业门户)使用数据存储区低级API。 我有一个名为候选人的实体,其中包含以下属性

    Entity cadidate=new Entity("Candidate",getEmpNum());
    candidate.setProperty("name","some name");
    candidate.setProperty("skill","c++,Java,C#,GAE");
    candiate.setProperty("empNum");

属性'skill'采用逗号分隔的字符串。如果人力资源部门使用密钥搜索候选人 “GAE,Java”,我如何有效地搜索实体? 以下查询是否有效?

    q.addFilter(searchBy, FilterOperator.GREATER_THAN_OR_EQUAL, searchFor);
    q.addFilter(searchBy, Query.FilterOperator.LESS_THAN, searchFor+"Z");

如果上述查询适用于1000个实体..当数据存储区中有50,000个实体时,它是否会以相同的延迟工作?

请建议我..我是GAE和Datastore的新手

-Thanks 马

1 个答案:

答案 0 :(得分:4)

您应该使用list属性。

List<String> skills = Arrays.asList("c++", "Java", "C#", "GAE");
candidate.setProperty("skill", skills);

然后使用IN运算符进行查询:

List<String> findSkills = Arrays.asList("Java","GAE");
q.addFilter("skill", FilterOperator.IN, findSkills);

这个