1

由于标题有点混乱,我用代码说明一下:

@Indexed @Entity
public class Person {
    @Id @GeneratedValue
    private Long id;

    @OneToMany(mappedBy = "employee")
    @IndexedEmbedded
    private Set<Job> jobs = new LinkedHashSet<>();
}

@Entity
public class Job {
    @Id @GeneratedValue
    private Long id;

    @Field 
    private Boolean current;
}

现在我有两个不同的搜索场景:一个人当前工作的属性和这个人曾经拥有的所有工作。我知道我可以在事后应用过滤器或在查询中添加另一个子句,但如果可能的话,我宁愿在索引中复制这些信息,所以我可以有两个不同的搜索查询,比如

  • (jobs.id: [10 TO 100])id适用于 10 到 100 之间的所有工作
  • (currentJobs.id: [10 TO 100])对于当前具有此 ID 范围的所有作业

这可能吗?如果是这样,怎么办?

4

1 回答 1

0

您可以为Set列表实现一个自定义桥接器,它迭代列表并仅索引当前作业。查看文档以获取自定义桥接的信息和示例。

于 2013-07-31T08:37:04.667 回答