我有这样的事情: A级:
@Entity
@Indexed
public class A {
@Fields({
@Field(name="a"....)
@Field(name="b"....)
)}
private String someField;
....
}
}
B班:
@Entity
@Indexed
public class B {
@IndexedEmbedded
@ManyToOne
private A a;
......
}
我想使用@Field' a'索引etity' A'和@Field' b'索引实体' b' !有可能吗? 因为lucene索引为班级' B'包含相同的字段两次(a.someString)但我不需要,我只需要一个字段用于此类。
答案 0 :(得分:1)
仅使用注释是不可能的。一种解决方案是为类a
中的多对一关联B
编写自定义字段桥。通过编写自定义字段桥,您可以控制自己要为类型A
的实例编制索引的字段。当然,缺点是您必须自己管理所有属性的索引。
更重要的问题是,为什么你想要这个条件索引?你有特定的问题吗?我不认为在这两种情况下添加两个字段都会影响您的搜索性能。最多你的索引会变得更大,但除非你遇到一些实际的问题/障碍,否则我不会担心这个。
<强>更新强>
实际上,您可以使用一项功能来控制它。您可以使用includePaths
的{{1}}属性,允许您明确控制将哪些字段添加到索引中。所以在你的情况下:
@IndexedEmbedded