如何根据休眠搜索中嵌入 id 中的属性之一获取搜索命中?
How to get search hits based on one of the attributes in embedded id in hibernate search?
我有以下休眠搜索实体 class:
@Entity
@Indexed
public class TableA {
@EmbeddedId
@DocumentId
@FieldBridge(impl = TableA_Bridge.class)
@Field(index = Index.YES, analyze = Analyze.YES, store = Store.NO)
private TableA_Pk id;
/*
Other fields;
setters and getters;
*/
}
以下是TableA_Pkclass:
@Embeddable
public class TableA_Pk implements Serializable {
private static final long serialVersionUID = 1L;
@Field(index = Index.YES, analyze = Analyze.YES, store = Store.NO)
private String a;
private String b;
private String c;
/*
setters and getters;
*/
}
那么,现在我的问题是,如何根据 TableA_Pk class 中的字段 a、b 或 c 找到匹配项?
您对 TableA_Bridge 的实现应该将每个 TableA_Pk 实例中的字段添加到 Lucene 文档中,使用适当的索引选项,您可以选择您想要的字段名称。
这将使它们可搜索。
使用 @FieldBridge 注释是 "advanced" 方法,您可能只想使用 @IndexedEmbedded,这将自动添加所有带有 @Field 注释的字段。
在这种情况下,您不会使用 @FieldBridge 注释。
我有以下休眠搜索实体 class:
@Entity
@Indexed
public class TableA {
@EmbeddedId
@DocumentId
@FieldBridge(impl = TableA_Bridge.class)
@Field(index = Index.YES, analyze = Analyze.YES, store = Store.NO)
private TableA_Pk id;
/*
Other fields;
setters and getters;
*/
}
以下是TableA_Pkclass:
@Embeddable
public class TableA_Pk implements Serializable {
private static final long serialVersionUID = 1L;
@Field(index = Index.YES, analyze = Analyze.YES, store = Store.NO)
private String a;
private String b;
private String c;
/*
setters and getters;
*/
}
那么,现在我的问题是,如何根据 TableA_Pk class 中的字段 a、b 或 c 找到匹配项?
您对 TableA_Bridge 的实现应该将每个 TableA_Pk 实例中的字段添加到 Lucene 文档中,使用适当的索引选项,您可以选择您想要的字段名称。
这将使它们可搜索。
使用 @FieldBridge 注释是 "advanced" 方法,您可能只想使用 @IndexedEmbedded,这将自动添加所有带有 @Field 注释的字段。 在这种情况下,您不会使用 @FieldBridge 注释。