上一篇是使用hibernate search的一个文档说明,已经简单地介绍了如何使用bridge来将放到pojo属性里去的值进行预处理,也就是在加入索引文件前,先将set进来的值跳转到bridge去处理,再将返回的结果作为将进行分词索引的值。我使用的是将上传的文件内容加入索引,这里由于文件内容在存入数据库前就转换为二进制流(如byte[] date,上面加入@Lob标注)。我的文件是放在Files类里,还一个FileVersions类,用来存放文件内容和文件版本及关联Files这个类,
为什么这么设计,我也搞不懂,我是半路接手的,所以就没去改它里面的逻辑。
public class FileVersion implements java.io.Serializable {
。。。
/** 版本号 **/
private float version = 0.1f;
/** 文件大小 **/
private int fileSize = 0;
/** 更新时间 **/
private java.util.Date updateDate = new java.util.Date();
/** 文件描述 **/
@Column(name = "DESCRIPTION", length = 255)
private String description;
/**
* 附件的内容
*/
@Basic(fetch = FetchType.LAZY)
@Column(name = "CONTENT", nullable = true)
@Lob
@FieldBridge(impl=org.edu.scut.lab24.search.bridge.HandlerBridge.class)
@Field(name = "data", index = Index.TOKENIZED, store = Store.NO)
private byte[] data;
/** 关联文件信息 **/
@ManyToOne(optional = true, fetch = FetchType.LAZY)
@JoinColumn(name = "FILEID", nullable = false)
@IndexedEmbedded(prefix="fileVersion_file_", depth=1)
private Files files;
}