将文件内容加入索引
上一篇是使用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;}?